GitHub check

256 KB of 598 KB loaded Download the full log (598 KB)
342 KB of earlier output not loaded
2026-10-23T22:25:17.9252233Z  154 โ”‚ โ”‚               headers: {
2026-10-23T22:25:17.9252410Z  155 โ”‚ โ”‚                 authorization: options.authorization,
2026-10-23T22:25:17.9252554Z  156 โ”‚ โ”‚                 "mcp-session-id": sessionId,
2026-10-23T22:25:17.9252796Z  157 โ”‚ โ”‚                 ...(connection.protocolVersion === null
2026-10-23T22:25:17.9252972Z  158 โ”‚ โ”‚                   ? {}
2026-10-23T22:25:17.9253191Z  159 โ”‚ โ”‚                   : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-23T22:25:17.9253298Z  160 โ”‚ โ”‚               },
2026-10-23T22:25:17.9253429Z  161 โ”‚ โ”‚             }),
2026-10-23T22:25:17.9253566Z  162 โ”‚ โ”‚           catch: bridgeError,
2026-10-23T22:25:17.9253703Z  163 โ”‚ โ”‚         });
2026-10-23T22:25:17.9253863Z  164 โ”‚ โ”‚         if (!response.ok && response.status !== 404) {
2026-10-23T22:25:17.9254024Z  165 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-23T22:25:17.9254179Z  166 โ”‚ โ”‚             new AcpMcpOverAcpError(
2026-10-23T22:25:17.9254419Z  167 โ”‚ โ”‚               `T3 Code MCP endpoint rejected disconnect with HTTP ${response.status}.`,
2026-10-23T22:25:17.9254554Z  168 โ”‚ โ”‚             ),
2026-10-23T22:25:17.9254658Z  169 โ”‚ โ”‚           );
2026-10-23T22:25:17.9254780Z  170 โ”‚ โ”‚         }
2026-10-23T22:25:17.9255048Z  171 โ”‚ โ”‚         yield* Effect.promise(
2026-10-23T22:25:17.9255297Z  172 โ”‚ โ”‚           () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-23T22:25:17.9255398Z  173 โ”‚ โ”‚         );
2026-10-23T22:25:17.9255520Z  174 โ”‚ โ”‚       }
2026-10-23T22:25:17.9255645Z  175 โ”‚ โ”‚       return {};
2026-10-23T22:25:17.9255762Z  176 โ”‚ โ”‚     });
2026-10-23T22:25:17.9255866Z  177 โ”‚ โ”‚
2026-10-23T22:25:17.9256001Z  178 โ”‚ โ”‚     return {
2026-10-23T22:25:17.9256229Z  179 โ”‚ โ”‚       connect: Effect.fn("mcpOverAcpBridge.connect")(function* (request) {
2026-10-23T22:25:17.9256388Z  180 โ”‚ โ”‚         if (request.serverId !== "t3-code") {
2026-10-23T22:25:17.9256538Z  181 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-23T22:25:17.9256785Z  182 โ”‚ โ”‚             new AcpMcpOverAcpError(`Unknown ACP MCP server "${request.serverId}".`),
2026-10-23T22:25:17.9256905Z  183 โ”‚ โ”‚           );
2026-10-23T22:25:17.9257022Z  184 โ”‚ โ”‚         }
2026-10-23T22:25:17.9257181Z  185 โ”‚ โ”‚         if (connections.size >= MAX_CONNECTIONS) {
2026-10-23T22:25:17.9257470Z  186 โ”‚ โ”‚           return yield* Effect.fail(new AcpMcpOverAcpError("Too many MCP-over-ACP connections."));
2026-10-23T22:25:17.9257603Z  187 โ”‚ โ”‚         }
2026-10-23T22:25:17.9257819Z  188 โ”‚ โ”‚         const connectionId = yield* options.allocateConnectionId;
2026-10-23T22:25:17.9258083Z  189 โ”‚ โ”‚         connections.set(connectionId, {
2026-10-23T22:25:17.9258250Z  190 โ”‚ โ”‚           mutex: yield* Semaphore.make(1),
2026-10-23T22:25:17.9258406Z  191 โ”‚ โ”‚           sessionId: null,
2026-10-23T22:25:17.9258558Z  192 โ”‚ โ”‚           protocolVersion: null,
2026-10-23T22:25:17.9258690Z  193 โ”‚ โ”‚           nextRequestId: 0,
2026-10-23T22:25:17.9258804Z  194 โ”‚ โ”‚         });
2026-10-23T22:25:17.9258985Z  195 โ”‚ โ”‚         return { connectionId };
2026-10-23T22:25:17.9259101Z  196 โ”‚ โ”‚       }),
2026-10-23T22:25:17.9259390Z  197 โ”‚ โ”‚       message: Effect.fn("mcpOverAcpBridge.message")(function* (request) {
2026-10-23T22:25:17.9259620Z  198 โ”‚ โ”‚         const connection = yield* connectionFor(request.connectionId);
2026-10-23T22:25:17.9259793Z  199 โ”‚ โ”‚         const id = ++connection.nextRequestId;
2026-10-23T22:25:17.9259978Z  200 โ”‚ โ”‚         const payloads = yield* send(connection, {
2026-10-23T22:25:17.9260122Z  201 โ”‚ โ”‚           jsonrpc: "2.0",
2026-10-23T22:25:17.9260225Z  202 โ”‚ โ”‚           id,
2026-10-23T22:25:17.9260369Z  203 โ”‚ โ”‚           method: request.method,
2026-10-23T22:25:17.9260594Z  204 โ”‚ โ”‚           ...(request.params == null ? {} : { params: request.params }),
2026-10-23T22:25:17.9260819Z  205 โ”‚ โ”‚         });
2026-10-23T22:25:17.9261040Z  206 โ”‚ โ”‚         const response = payloads.find((payload) => asEnvelope(payload)?.id === id);
2026-10-23T22:25:17.9261213Z  207 โ”‚ โ”‚         const envelope = asEnvelope(response);
2026-10-23T22:25:17.9261409Z  208 โ”‚ โ”‚         if (envelope === null) {
2026-10-23T22:25:17.9261576Z  209 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-23T22:25:17.9261794Z  210 โ”‚ โ”‚             new AcpMcpOverAcpError("MCP server did not return a matching response."),
2026-10-23T22:25:17.9261921Z  211 โ”‚ โ”‚           );
2026-10-23T22:25:17.9262031Z  212 โ”‚ โ”‚         }
2026-10-23T22:25:17.9262209Z  213 โ”‚ โ”‚         if (envelope.error !== undefined) {
2026-10-23T22:25:17.9262454Z  214 โ”‚ โ”‚           return yield* Effect.fail(new AcpMcpOverAcpError(errorMessage(envelope.error)));
2026-10-23T22:25:17.9262562Z  215 โ”‚ โ”‚         }
2026-10-23T22:25:17.9262785Z  216 โ”‚ โ”‚         return (envelope.result ?? null) as AcpSchema.MessageMcpResponse;
2026-10-23T22:25:17.9262926Z  217 โ”‚ โ”‚       }),
2026-10-23T22:25:17.9263182Z  218 โ”‚ โ”‚       notification: Effect.fn("mcpOverAcpBridge.notification")(function* (request) {
2026-10-23T22:25:17.9263370Z  219 โ”‚ โ”‚         const connection = yield* connectionFor(request.connectionId);
2026-10-23T22:25:17.9263524Z  220 โ”‚ โ”‚         yield* send(connection, {
2026-10-23T22:25:17.9263659Z  221 โ”‚ โ”‚           jsonrpc: "2.0",
2026-10-23T22:25:17.9263828Z  222 โ”‚ โ”‚           method: request.method,
2026-10-23T22:25:17.9264015Z  223 โ”‚ โ”‚           ...(request.params == null ? {} : { params: request.params }),
2026-10-23T22:25:17.9264250Z  224 โ”‚ โ”‚         });
2026-10-23T22:25:17.9264370Z  225 โ”‚ โ”‚       }),
2026-10-23T22:25:17.9264503Z  226 โ”‚ โ”‚       disconnect,
2026-10-23T22:25:17.9264649Z  227 โ”‚ โ”‚       dispose: Effect.suspend(() =>
2026-10-23T22:25:17.9264796Z  228 โ”‚ โ”‚         Effect.forEach(
2026-10-23T22:25:17.9264948Z  229 โ”‚ โ”‚           [...connections.keys()],
2026-10-23T22:25:17.9265159Z  230 โ”‚ โ”‚           (connectionId) => disconnect({ connectionId }).pipe(Effect.ignore),
2026-10-23T22:25:17.9265296Z  231 โ”‚ โ”‚           { discard: true },
2026-10-23T22:25:17.9265432Z  232 โ”‚ โ”‚         ),
2026-10-23T22:25:17.9265551Z  233 โ”‚ โ”‚       ),
2026-10-23T22:25:17.9265665Z  234 โ”‚ โ”‚     };
2026-10-23T22:25:17.9265879Z  235 โ”‚ โ•ฐโ”€โ–ถ });
2026-10-23T22:25:17.9266043Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9266356Z   help: Add a `yield` expression inside the generator body, or convert it to a regular function if iteration behavior is not needed.
2026-10-23T22:25:17.9266360Z
2026-10-23T22:25:17.9266614Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9266821Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:215:7]
2026-10-23T22:25:17.9266916Z  214 โ”‚     }
2026-10-23T22:25:17.9267151Z  215 โ”‚   }, [wrappedRender]);
2026-10-23T22:25:17.9267278Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9267476Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `wrappedRender`
2026-10-23T22:25:17.9267545Z  216 โ”‚
2026-10-23T22:25:17.9267658Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9268019Z   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-23T22:25:17.9268402Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9268405Z
2026-10-23T22:25:17.9268689Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9268905Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:817:35]
2026-10-23T22:25:17.9269011Z  816 โ”‚       >
2026-10-23T22:25:17.9269169Z  817 โ”‚         <AdaptiveWorkspaceContext value={contextValue}>
2026-10-23T22:25:17.9269339Z      ยท                                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9269457Z  818 โ”‚           <NativeWorkspaceInspectorContext
2026-10-23T22:25:17.9269569Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9269842Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9270033Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9270036Z
2026-10-23T22:25:17.9270383Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9270693Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:832:42]
2026-10-23T22:25:17.9270799Z  831 โ”‚     >
2026-10-23T22:25:17.9270971Z  832 โ”‚       <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-23T22:25:17.9271133Z      ยท                                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9271274Z  833 โ”‚         <WindowHingeContext value={windowHinge}>
2026-10-23T22:25:17.9271408Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9271691Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9271862Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9271885Z
2026-10-23T22:25:17.9272111Z   โš  eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-23T22:25:17.9272259Z     โ•ญโ”€[apps/server/src/ws.ts:10:13]
2026-10-23T22:25:17.9272401Z   9 โ”‚ import * as Effect from "effect/Effect";
2026-10-23T22:25:17.9272534Z  10 โ”‚ import * as Fiber from "effect/Fiber";
2026-10-23T22:25:17.9272632Z     ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9272886Z     ยท               โ•ฐโ”€โ”€ 'Fiber' is imported here
2026-10-23T22:25:17.9273108Z  11 โ”‚ import * as FileSystem from "effect/FileSystem";
2026-10-23T22:25:17.9273198Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9273322Z   help: Consider removing this import.
2026-10-23T22:25:17.9273325Z
2026-10-23T22:25:17.9273665Z   โš  eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-23T22:25:17.9273805Z     โ•ญโ”€[apps/server/src/ws.ts:17:13]
2026-10-23T22:25:17.9273941Z  16 โ”‚ import * as Ref from "effect/Ref";
2026-10-23T22:25:17.9274056Z  17 โ”‚ import * as Schedule from "effect/Schedule";
2026-10-23T22:25:17.9274177Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9274347Z     ยท                 โ•ฐโ”€โ”€ 'Schedule' is imported here
2026-10-23T22:25:17.9274511Z  18 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T22:25:17.9274588Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9274729Z   help: Consider removing this import.
2026-10-23T22:25:17.9274731Z
2026-10-23T22:25:17.9275092Z   โš  eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9275244Z       โ•ญโ”€[apps/server/src/ws.ts:1285:13]
2026-10-23T22:25:17.9275461Z  1284 โ”‚       const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-23T22:25:17.9275689Z  1285 โ”‚       const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-23T22:25:17.9275844Z       ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9276054Z       ยท                         โ•ฐโ”€โ”€ 'projectSetupScriptRunner' is declared here
2026-10-23T22:25:17.9276297Z  1286 โ”‚       const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-23T22:25:17.9276373Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9276523Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9276526Z
2026-10-23T22:25:17.9276937Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9277185Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:413:7]
2026-10-23T22:25:17.9277266Z  412 โ”‚
2026-10-23T22:25:17.9277456Z  413 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-23T22:25:17.9277568Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9277761Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T22:25:17.9278097Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9278398Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9278555Z
2026-10-23T22:25:17.9278795Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T22:25:17.9279255Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-23T22:25:17.9279539Z  185 โ”‚
2026-10-23T22:25:17.9279918Z  186 โ”‚ for (const {} of ["darwin", "linux"] as const) {
2026-10-23T22:25:17.9280181Z      ยท            โ”€โ”€
2026-10-23T22:25:17.9280430Z  187 โ”‚ }
2026-10-23T22:25:17.9280607Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9281011Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T22:25:17.9281277Z
2026-10-23T22:25:17.9289627Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T22:25:17.9290182Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:189:12]
2026-10-23T22:25:17.9290453Z  188 โ”‚
2026-10-23T22:25:17.9290604Z  189 โ”‚ for (const {} of [
2026-10-23T22:25:17.9290779Z      ยท            โ”€โ”€
2026-10-23T22:25:17.9290983Z  190 โ”‚   { kind: "browser", folderVerb: "none" },
2026-10-23T22:25:17.9291195Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9291792Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T22:25:17.9292045Z
2026-10-23T22:25:17.9292804Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T22:25:17.9293236Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-23T22:25:17.9293463Z  310 โ”‚
2026-10-23T22:25:17.9293767Z  311 โ”‚ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-23T22:25:17.9294018Z      ยท            โ”€โ”€
2026-10-23T22:25:17.9294186Z  312 โ”‚ }
2026-10-23T22:25:17.9294312Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9294620Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T22:25:17.9294868Z
2026-10-23T22:25:17.9295053Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T22:25:17.9295384Z      โ•ญโ”€[apps/server/src/process/externalLauncher.test.ts:314:12]
2026-10-23T22:25:17.9295607Z  313 โ”‚
2026-10-23T22:25:17.9295744Z  314 โ”‚ for (const {} of [
2026-10-23T22:25:17.9295916Z      ยท            โ”€โ”€
2026-10-23T22:25:17.9296070Z  315 โ”‚   {
2026-10-23T22:25:17.9296195Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9296504Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T22:25:17.9296753Z
2026-10-23T22:25:17.9297048Z   โš  eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9297484Z      โ•ญโ”€[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
2026-10-23T22:25:17.9297700Z  913 โ”‚
2026-10-23T22:25:17.9297973Z  914 โ”‚ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
2026-10-23T22:25:17.9298267Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9298525Z      ยท            โ•ฐโ”€โ”€ 'layerDaemon' is declared here
2026-10-23T22:25:17.9298775Z  915 โ”‚   runDaemon.pipe(Effect.forkScoped),
2026-10-23T22:25:17.9298954Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9299130Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9299265Z
2026-10-23T22:25:17.9299516Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T22:25:17.9299916Z       โ•ญโ”€[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-23T22:25:17.9300156Z  1021 โ”‚             instanceId,
2026-10-23T22:25:17.9300408Z  1022 โ”‚             { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-23T22:25:17.9300724Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9300943Z  1023 โ”‚           ]),
2026-10-23T22:25:17.9301086Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9301487Z   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-23T22:25:17.9301768Z
2026-10-23T22:25:17.9302126Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9302580Z      โ•ญโ”€[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-23T22:25:17.9302789Z  407 โ”‚
2026-10-23T22:25:17.9302936Z  408 โ”‚ const layer: Layer.Layer<
2026-10-23T22:25:17.9303112Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9303345Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T22:25:17.9303594Z  409 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-23T22:25:17.9303783Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9303956Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9304093Z
2026-10-23T22:25:17.9304295Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9304674Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-23T22:25:17.9305065Z   99 โ”‚   const startEditor = startScheduledTaskEditor;
2026-10-23T22:25:17.9305400Z  100 โ”‚   const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-23T22:25:17.9305762Z      ยท                                                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9306196Z      ยท                                                                                          โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-23T22:25:17.9306487Z  101 โ”‚   const readEditor = useCallback(
2026-10-23T22:25:17.9306656Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9307059Z   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-23T22:25:17.9307814Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9308144Z
2026-10-23T22:25:17.9308345Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9308716Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-23T22:25:17.9308972Z  120 โ”‚       setEditor,
2026-10-23T22:25:17.9309131Z  121 โ”‚       startEditor,
2026-10-23T22:25:17.9309307Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9309572Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-23T22:25:17.9309800Z  122 โ”‚       hasChanges,
2026-10-23T22:25:17.9309950Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9310588Z   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-23T22:25:17.9311298Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9311664Z
2026-10-23T22:25:17.9311944Z   โš  eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-23T22:25:17.9312381Z       โ•ญโ”€[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-23T22:25:17.9312612Z  1619 โ”‚
2026-10-23T22:25:17.9312917Z  1620 โ”‚ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-23T22:25:17.9313278Z       ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9313637Z       ยท                            โ•ฐโ”€โ”€ 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-23T22:25:17.9313938Z  1621 โ”‚   const meta = response._meta;
2026-10-23T22:25:17.9314109Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9314290Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9314421Z
2026-10-23T22:25:17.9314646Z   โš  eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-23T22:25:17.9315039Z     โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-23T22:25:17.9315319Z  24 โ”‚ import * as Schema from "effect/Schema";
2026-10-23T22:25:17.9315566Z  25 โ”‚ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-23T22:25:17.9315805Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9316147Z     ยท                  โ•ฐโ”€โ”€ 'HostProcess' is imported here
2026-10-23T22:25:17.9316359Z  26 โ”‚
2026-10-23T22:25:17.9316487Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9316662Z   help: Consider removing this import.
2026-10-23T22:25:17.9316795Z
2026-10-23T22:25:17.9317094Z   โš  eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9317592Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-23T22:25:17.9317869Z  123 โ”‚     const path = yield* Path.Path;
2026-10-23T22:25:17.9318117Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T22:25:17.9318351Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9318676Z      ยท                 โ•ฐโ”€โ”€ 'serverConfig' is declared here
2026-10-23T22:25:17.9318986Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T22:25:17.9319210Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9319395Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9319526Z
2026-10-23T22:25:17.9319845Z   โš  eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9320306Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-23T22:25:17.9320619Z  124 โ”‚     const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-23T22:25:17.9320914Z  125 โ”‚     const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-23T22:25:17.9321176Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9321479Z      ยท                  โ•ฐโ”€โ”€ 'serverSettings' is declared here
2026-10-23T22:25:17.9321791Z  126 โ”‚     const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-23T22:25:17.9322009Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9322264Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9322438Z
2026-10-23T22:25:17.9322617Z   โš  eslint(no-control-regex): Unexpected control character
2026-10-23T22:25:17.9323013Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-23T22:25:17.9323378Z  219 โ”‚               <Text selectable className="font-mono text-sm text-foreground">
2026-10-23T22:25:17.9323700Z  220 โ”‚                 {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-23T22:25:17.9323976Z      ยท                                              โ”€โ”€โ”ฌโ”€
2026-10-23T22:25:17.9324285Z      ยท                                                โ•ฐโ”€โ”€ 'U+001B' is a control character.
2026-10-23T22:25:17.9324526Z  221 โ”‚               </Text>
2026-10-23T22:25:17.9324688Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9325006Z   help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-23T22:25:17.9325258Z
2026-10-23T22:25:17.9325500Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T22:25:17.9325870Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:114:11]
2026-10-23T22:25:17.9326101Z  113 โ”‚         const declared = {
2026-10-23T22:25:17.9326299Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-23T22:25:17.9326544Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9326789Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-23T22:25:17.9326980Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9327334Z   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-23T22:25:17.9327618Z
2026-10-23T22:25:17.9327856Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T22:25:17.9328229Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:115:11]
2026-10-23T22:25:17.9328481Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-23T22:25:17.9328712Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-23T22:25:17.9328981Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9329225Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-23T22:25:17.9329408Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9329754Z   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-23T22:25:17.9330035Z
2026-10-23T22:25:17.9330274Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-23T22:25:17.9330647Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:116:11]
2026-10-23T22:25:17.9330906Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-23T22:25:17.9331160Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-23T22:25:17.9331501Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9331705Z  117 โ”‚         };
2026-10-23T22:25:17.9331844Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9332188Z   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-23T22:25:17.9332465Z
2026-10-23T22:25:17.9332759Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9333169Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-23T22:25:17.9333448Z  256 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-23T22:25:17.9333662Z  257 โ”‚   }, [props.path, targetIndex]);
2026-10-23T22:25:17.9333861Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9334122Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `props.path`
2026-10-23T22:25:17.9334341Z  258 โ”‚
2026-10-23T22:25:17.9334462Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9334843Z   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-23T22:25:17.9335490Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9335825Z
2026-10-23T22:25:17.9336040Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9336407Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-23T22:25:17.9336659Z  292 โ”‚                     <SourceText
2026-10-23T22:25:17.9336873Z  293 โ”‚                       key={`${index}:${tokenIndex}`}
2026-10-23T22:25:17.9337121Z      ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9337332Z  294 โ”‚                       style={{
2026-10-23T22:25:17.9337486Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9337708Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9337881Z
2026-10-23T22:25:17.9338087Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9338465Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-23T22:25:17.9338706Z  308 โ”‚             return (
2026-10-23T22:25:17.9338895Z  309 โ”‚               <SourceText key={index}>
2026-10-23T22:25:17.9339117Z      ยท                           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9339311Z  310 โ”‚                 {body}
2026-10-23T22:25:17.9339459Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9339678Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9339849Z
2026-10-23T22:25:17.9340133Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9340547Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-23T22:25:17.9340761Z  57 โ”‚
2026-10-23T22:25:17.9340905Z  58 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9341085Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9341322Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9341625Z  59 โ”‚     const controller = new AbortController();
2026-10-23T22:25:17.9341830Z  60 โ”‚     setLoadState("pending");
2026-10-23T22:25:17.9342019Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9342301Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9342662Z  61 โ”‚     // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-23T22:25:17.9342898Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9343705Z   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-23T22:25:17.9344702Z   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-23T22:25:17.9345035Z
2026-10-23T22:25:17.9345256Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9345618Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-23T22:25:17.9345870Z  70 โ”‚     return () => controller.abort();
2026-10-23T22:25:17.9346089Z  71 โ”‚   }, [player, props.playRequested, attempt]);
2026-10-23T22:25:17.9346399Z     ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9346823Z     ยท          โ”‚             โ”‚              โ•ฐโ”€โ”€ Unnecessary dependency `attempt`
2026-10-23T22:25:17.9347265Z     ยท          โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `props.playRequested`
2026-10-23T22:25:17.9347621Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `player_0`
2026-10-23T22:25:17.9347838Z  72 โ”‚
2026-10-23T22:25:17.9347958Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9348338Z   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-23T22:25:17.9348978Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9349305Z
2026-10-23T22:25:17.9349592Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9350049Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-23T22:25:17.9350365Z  118 โ”‚
2026-10-23T22:25:17.9350520Z  119 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9350696Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9350931Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9351171Z  120 โ”‚     if (orientationSettled) return;
2026-10-23T22:25:17.9351443Z  121 โ”‚     const orientation = getNativeShowcaseOrientation();
2026-10-23T22:25:17.9351672Z  122 โ”‚     if (orientation === null) {
2026-10-23T22:25:17.9351874Z  123 โ”‚       setOrientationSettled(true);
2026-10-23T22:25:17.9352088Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9352472Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9352768Z  124 โ”‚       return;
2026-10-23T22:25:17.9352910Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9353625Z   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-23T22:25:17.9354561Z   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-23T22:25:17.9354896Z
2026-10-23T22:25:17.9355173Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9355630Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-23T22:25:17.9355880Z  292 โ”‚
2026-10-23T22:25:17.9356022Z  293 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9356194Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9356429Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9356639Z  294 โ”‚     if (
2026-10-23T22:25:17.9356791Z  295 โ”‚       scene === null ||
2026-10-23T22:25:17.9356969Z  296 โ”‚       requestedScene === null ||
2026-10-23T22:25:17.9357158Z  297 โ”‚       scene !== requestedScene ||
2026-10-23T22:25:17.9357344Z  298 โ”‚       !hasFixture ||
2026-10-23T22:25:17.9357517Z  299 โ”‚       !orientationSettled ||
2026-10-23T22:25:17.9357707Z  300 โ”‚       !themeApplied ||
2026-10-23T22:25:17.9357930Z  301 โ”‚       (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-23T22:25:17.9358228Z  302 โ”‚       !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-23T22:25:17.9358452Z  303 โ”‚     ) {
2026-10-23T22:25:17.9358604Z  304 โ”‚       setReadyScene(null);
2026-10-23T22:25:17.9358790Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9359083Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9359332Z  305 โ”‚       return;
2026-10-23T22:25:17.9359475Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9360188Z   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-23T22:25:17.9361127Z   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-23T22:25:17.9361500Z
2026-10-23T22:25:17.9361802Z   โš  eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9362267Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-23T22:25:17.9362535Z  127 โ”‚     let cancelled = false;
2026-10-23T22:25:17.9362737Z  128 โ”‚     let lastOutcome: string | null = null;
2026-10-23T22:25:17.9362946Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9363201Z      ยท              โ•ฐโ”€โ”€ 'lastOutcome' is declared here
2026-10-23T22:25:17.9363546Z  129 โ”‚     void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-23T22:25:17.9363797Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9364054Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9364359Z
2026-10-23T22:25:17.9364527Z   โš  react(immutability): This value cannot be modified
2026-10-23T22:25:17.9364876Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-23T22:25:17.9365163Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-23T22:25:17.9365400Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-23T22:25:17.9365608Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9365872Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-23T22:25:17.9366084Z  55 โ”‚
2026-10-23T22:25:17.9366228Z  56 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9366398Z  57 โ”‚     if (pulse) {
2026-10-23T22:25:17.9366588Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-23T22:25:17.9366801Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9367059Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-23T22:25:17.9367299Z  59 โ”‚         withTiming(1, {
2026-10-23T22:25:17.9367458Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9367822Z   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-23T22:25:17.9368435Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T22:25:17.9368758Z
2026-10-23T22:25:17.9368973Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9369347Z      โ•ญโ”€[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-23T22:25:17.9369649Z  266 โ”‚                 {record.elements?.map((element, index) => (
2026-10-23T22:25:17.9369977Z  267 โ”‚                   <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-23T22:25:17.9370335Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9370578Z  268 โ”‚                     <ContextField
2026-10-23T22:25:17.9370748Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9370970Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9371152Z
2026-10-23T22:25:17.9371538Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9371992Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-23T22:25:17.9372242Z  76 โ”‚
2026-10-23T22:25:17.9372386Z  77 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9372566Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9372801Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9373089Z  78 โ”‚     const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-23T22:25:17.9373318Z  79 โ”‚     setHostInput(host);
2026-10-23T22:25:17.9373500Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9373781Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9374033Z  80 โ”‚     setCodeInput(code);
2026-10-23T22:25:17.9374187Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9374965Z   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-23T22:25:17.9376043Z   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-23T22:25:17.9376382Z
2026-10-23T22:25:17.9376663Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9377111Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-23T22:25:17.9377356Z  82 โ”‚
2026-10-23T22:25:17.9377496Z  83 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9377660Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9377897Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9378151Z  84 โ”‚     if (routePairingUrl.length === 0) {
2026-10-23T22:25:17.9378339Z  85 โ”‚       return;
2026-10-23T22:25:17.9378481Z  86 โ”‚     }
2026-10-23T22:25:17.9378610Z  87 โ”‚
2026-10-23T22:25:17.9378800Z  88 โ”‚     const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-23T22:25:17.9379019Z  89 โ”‚     setHostInput(host);
2026-10-23T22:25:17.9379202Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9379482Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9379741Z  90 โ”‚     setCodeInput(code);
2026-10-23T22:25:17.9379890Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9380616Z   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-23T22:25:17.9381586Z   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-23T22:25:17.9381924Z
2026-10-23T22:25:17.9382204Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9382655Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-23T22:25:17.9382900Z  92 โ”‚
2026-10-23T22:25:17.9383036Z  93 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9383210Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9383442Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9383682Z  94 โ”‚     if (pairingConnectionError) {
2026-10-23T22:25:17.9383880Z  95 โ”‚       setIsSubmitting(false);
2026-10-23T22:25:17.9384078Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9384367Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9384612Z  96 โ”‚     }
2026-10-23T22:25:17.9384739Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9385449Z   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-23T22:25:17.9386377Z   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-23T22:25:17.9386712Z
2026-10-23T22:25:17.9387051Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9387497Z      โ•ญโ”€[apps/mobile/src/components/ProjectFavicon.tsx:158:5]
2026-10-23T22:25:17.9387868Z  153 โ”‚   const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-23T22:25:17.9388156Z  154 โ”‚   useLayoutEffect(() => {
2026-10-23T22:25:17.9388348Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9388596Z      ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9388847Z  155 โ”‚     if (faviconRequest === null) return;
2026-10-23T22:25:17.9389022Z  156 โ”‚
2026-10-23T22:25:17.9389233Z  157 โ”‚     const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-23T22:25:17.9389500Z  158 โ”‚     setActiveFaviconRequest(faviconRequest);
2026-10-23T22:25:17.9389734Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9390041Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9390362Z  159 โ”‚     return endRequest;
2026-10-23T22:25:17.9390520Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9391235Z   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-23T22:25:17.9392205Z   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-23T22:25:17.9392538Z
2026-10-23T22:25:17.9392824Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9393251Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-23T22:25:17.9393485Z  61 โ”‚   }, []);
2026-10-23T22:25:17.9393635Z  62 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9393801Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9394037Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9394344Z  63 โ”‚     if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-23T22:25:17.9394656Z     ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9395015Z     ยท                                                              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9395395Z  64 โ”‚   }, [playbackUrl, resolvedUrl]);
2026-10-23T22:25:17.9395616Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9396337Z   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-23T22:25:17.9397266Z   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-23T22:25:17.9397600Z
2026-10-23T22:25:17.9397822Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9398180Z     โ•ญโ”€[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-23T22:25:17.9398404Z  81 โ”‚     },
2026-10-23T22:25:17.9398552Z  82 โ”‚     [draftKey],
2026-10-23T22:25:17.9398721Z     ยท      โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9398963Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `draftKey`
2026-10-23T22:25:17.9399184Z  83 โ”‚   );
2026-10-23T22:25:17.9399310Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9399692Z   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-23T22:25:17.9400336Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9400664Z
2026-10-23T22:25:17.9400948Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9401403Z      โ•ญโ”€[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-23T22:25:17.9401634Z  150 โ”‚
2026-10-23T22:25:17.9401776Z  151 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9401951Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9402184Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9402425Z  152 โ”‚     if (!controlledSelectedPath) {
2026-10-23T22:25:17.9402610Z  153 โ”‚       return;
2026-10-23T22:25:17.9402759Z  154 โ”‚     }
2026-10-23T22:25:17.9402925Z  155 โ”‚     setExpandedPaths((current) => {
2026-10-23T22:25:17.9403126Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9403415Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9403733Z  156 โ”‚       const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-23T22:25:17.9403955Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9404667Z   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-23T22:25:17.9405606Z   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-23T22:25:17.9405937Z
2026-10-23T22:25:17.9406214Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9406677Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:7]
2026-10-23T22:25:17.9406925Z  330 โ”‚   };
2026-10-23T22:25:17.9407145Z  331 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9407361Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9407598Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9407855Z  332 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-23T22:25:17.9408097Z  333 โ”‚       requestedSection.current = "overview";
2026-10-23T22:25:17.9408405Z  334 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-23T22:25:17.9408677Z  335 โ”‚       setSection("overview");
2026-10-23T22:25:17.9408871Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9409156Z      ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9409403Z  336 โ”‚     }
2026-10-23T22:25:17.9409531Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9410250Z   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-23T22:25:17.9411191Z   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-23T22:25:17.9411613Z
2026-10-23T22:25:17.9411841Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-23T22:25:17.9412251Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:337:6]
2026-10-23T22:25:17.9412550Z  332 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-23T22:25:17.9412781Z  333 โ”‚       requestedSection.current = "overview";
2026-10-23T22:25:17.9413002Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9413595Z      ยท               โ•ฐโ”€โ”€ Missing dependency `requestedSection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-23T22:25:17.9414211Z  334 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-23T22:25:17.9414565Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9415264Z      ยท                โ”‚                          โ•ฐโ”€โ”€ Missing dependency `scrollOffsets`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-23T22:25:17.9416222Z      ยท                โ•ฐโ”€โ”€ Missing dependency `currentScrollOffset`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-23T22:25:17.9416740Z  335 โ”‚       setSection("overview");
2026-10-23T22:25:17.9416910Z  336 โ”‚     }
2026-10-23T22:25:17.9417089Z  337 โ”‚   }, [guidesEnabled, section, insets.top]);
2026-10-23T22:25:17.9417341Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9417678Z      ยท                        โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T22:25:17.9417976Z  338 โ”‚   const tabContent = activityContent;
2026-10-23T22:25:17.9418149Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9418395Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-23T22:25:17.9418993Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9419363Z
2026-10-23T22:25:17.9419586Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-23T22:25:17.9419996Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:873:6]
2026-10-23T22:25:17.9420247Z  856 โ”‚     if (
2026-10-23T22:25:17.9420454Z  857 โ”‚       lastSelection.current.path === route.params.path &&
2026-10-23T22:25:17.9420685Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9421276Z      ยท             โ•ฐโ”€โ”€ Missing dependency `lastSelection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-23T22:25:17.9421882Z  858 โ”‚       lastSelection.current.id === route.params.fileSelectionId
2026-10-23T22:25:17.9422099Z  859 โ”‚     )
2026-10-23T22:25:17.9422237Z  860 โ”‚       return;
2026-10-23T22:25:17.9422516Z  861 โ”‚     lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-23T22:25:17.9422863Z  862 โ”‚     if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-23T22:25:17.9423127Z  863 โ”‚     setJumpPath(route.params.path);
2026-10-23T22:25:17.9423322Z  864 โ”‚     setSelectedRowId(null);
2026-10-23T22:25:17.9423514Z  865 โ”‚     jumpStarted.current = false;
2026-10-23T22:25:17.9423790Z  866 โ”‚     const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-23T22:25:17.9424071Z  867 โ”‚     if (!file || !nativeView.current) return;
2026-10-23T22:25:17.9424295Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9424884Z      ยท                        โ•ฐโ”€โ”€ Missing dependency `nativeView`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-23T22:25:17.9425439Z  868 โ”‚     setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-23T22:25:17.9425680Z  869 โ”‚     jumpStarted.current = true;
2026-10-23T22:25:17.9425939Z  870 โ”‚     void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-23T22:25:17.9426195Z  871 โ”‚       jumpStarted.current = false;
2026-10-23T22:25:17.9426372Z  872 โ”‚     });
2026-10-23T22:25:17.9426658Z  873 โ”‚   }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-23T22:25:17.9427101Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9427535Z      ยท                                                    โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-23T22:25:17.9427882Z  874 โ”‚   const appliedFilter = useRef(filter.hideTestFiles);
2026-10-23T22:25:17.9428083Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9428334Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-23T22:25:17.9428861Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9429186Z
2026-10-23T22:25:17.9429392Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9429855Z      โ•ญโ”€[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-23T22:25:17.9430631Z  115 โ”‚     return [...commands];
2026-10-23T22:25:17.9430877Z  116 โ”‚   }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-23T22:25:17.9431166Z      ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9431538Z      ยท                                           โ•ฐโ”€โ”€ Unnecessary dependency `registrationVersion`
2026-10-23T22:25:17.9431789Z  117 โ”‚
2026-10-23T22:25:17.9431913Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9432321Z   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-23T22:25:17.9433096Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9433430Z
2026-10-23T22:25:17.9433646Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9434013Z     โ•ญโ”€[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-23T22:25:17.9434281Z  35 โ”‚       <T3SourceTextRunNativeComponent
2026-10-23T22:25:17.9434473Z  36 โ”‚         key={index}
2026-10-23T22:25:17.9434655Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9434844Z  37 โ”‚         style={flattenedStyle}
2026-10-23T22:25:17.9435006Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9435236Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9435408Z
2026-10-23T22:25:17.9435813Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownOption(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T22:25:17.9436328Z      โ•ญโ”€[packages/shared/src/otelEnvironment.ts:146:14]
2026-10-23T22:25:17.9436542Z  145 โ”‚     name,
2026-10-23T22:25:17.9436779Z  146 โ”‚     (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-23T22:25:17.9437061Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9437325Z  147 โ”‚     `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-23T22:25:17.9437527Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9437593Z
2026-10-23T22:25:17.9437881Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9438299Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2121:5]
2026-10-23T22:25:17.9438633Z  2119 โ”‚   );
2026-10-23T22:25:17.9438842Z  2120 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9439141Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9439451Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9439691Z  2121 โ”‚     setExpandedVideo(null);
2026-10-23T22:25:17.9439891Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9440188Z       ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9440458Z  2122 โ”‚     setExpandedFile(null);
2026-10-23T22:25:17.9440619Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9441372Z   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-23T22:25:17.9442338Z   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-23T22:25:17.9442672Z
2026-10-23T22:25:17.9442929Z   โš  eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-23T22:25:17.9443322Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:62:10]
2026-10-23T22:25:17.9443783Z  61 โ”‚ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-23T22:25:17.9444264Z  62 โ”‚ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-23T22:25:17.9444699Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9445169Z     ยท                     โ•ฐโ”€โ”€ 'isMarkdownFileLinkLabel' is imported here
2026-10-23T22:25:17.9445761Z  63 โ”‚ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-23T22:25:17.9446152Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9446421Z   help: Consider removing this import.
2026-10-23T22:25:17.9446625Z
2026-10-23T22:25:17.9446995Z   โš  eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-23T22:25:17.9447567Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:88:3]
2026-10-23T22:25:17.9447909Z  87 โ”‚ import {
2026-10-23T22:25:17.9448137Z  88 โ”‚   createContext,
2026-10-23T22:25:17.9448397Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9448790Z     ยท         โ•ฐโ”€โ”€ 'createContext' is imported here
2026-10-23T22:25:17.9449129Z  89 โ”‚   memo,
2026-10-23T22:25:17.9449339Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9449598Z   help: Consider removing this import.
2026-10-23T22:25:17.9449792Z
2026-10-23T22:25:17.9450166Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-23T22:25:17.9450792Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:104:3]
2026-10-23T22:25:17.9451157Z  103 โ”‚ import {
2026-10-23T22:25:17.9452143Z  104 โ”‚   ActivityIndicator,
2026-10-23T22:25:17.9452911Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9453243Z      ยท           โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-23T22:25:17.9453311Z  105 โ”‚   Image,
2026-10-23T22:25:17.9453365Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9453479Z   help: Consider removing this import.
2026-10-23T22:25:17.9453494Z
2026-10-23T22:25:17.9453722Z   โš  eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-23T22:25:17.9454387Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:111:3]
2026-10-23T22:25:17.9454570Z  110 โ”‚   Pressable,
2026-10-23T22:25:17.9454640Z  111 โ”‚   ScrollView,
2026-10-23T22:25:17.9454722Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9454867Z      ยท        โ•ฐโ”€โ”€ 'ScrollView' is imported here
2026-10-23T22:25:17.9454930Z  112 โ”‚   StyleSheet,
2026-10-23T22:25:17.9454988Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9455093Z   help: Consider removing this import.
2026-10-23T22:25:17.9455096Z
2026-10-23T22:25:17.9455307Z   โš  eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-23T22:25:17.9455449Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:113:11]
2026-10-23T22:25:17.9455513Z  112 โ”‚   StyleSheet,
2026-10-23T22:25:17.9455589Z  113 โ”‚   Text as NativeText,
2026-10-23T22:25:17.9455684Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9455832Z      ยท                โ•ฐโ”€โ”€ 'NativeText' is imported here
2026-10-23T22:25:17.9455906Z  114 โ”‚   type ColorValue,
2026-10-23T22:25:17.9455965Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9456072Z   help: Consider removing this import.
2026-10-23T22:25:17.9456075Z
2026-10-23T22:25:17.9456297Z   โš  eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-23T22:25:17.9456440Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:136:10]
2026-10-23T22:25:17.9456585Z  135 โ”‚ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-23T22:25:17.9456720Z  136 โ”‚ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-23T22:25:17.9456813Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9456988Z      ยท                   โ•ฐโ”€โ”€ 'tryOpenExternalUrl' is imported here
2026-10-23T22:25:17.9457146Z  137 โ”‚ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-23T22:25:17.9457202Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9457301Z   help: Consider removing this import.
2026-10-23T22:25:17.9457304Z
2026-10-23T22:25:17.9457534Z   โš  eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-23T22:25:17.9457674Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:139:10]
2026-10-23T22:25:17.9457820Z  138 โ”‚ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-23T22:25:17.9457953Z  139 โ”‚ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-23T22:25:17.9458052Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9458221Z      ยท                   โ•ฐโ”€โ”€ 'faviconUrlForOrigin' is imported here
2026-10-23T22:25:17.9458287Z  140 โ”‚ import {
2026-10-23T22:25:17.9458339Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9458444Z   help: Consider removing this import.
2026-10-23T22:25:17.9458446Z
2026-10-23T22:25:17.9458667Z   โš  eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-23T22:25:17.9458805Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:153:10]
2026-10-23T22:25:17.9458955Z  152 โ”‚ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-23T22:25:17.9459095Z  153 โ”‚ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-23T22:25:17.9459188Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9459347Z      ยท                  โ•ฐโ”€โ”€ 'MediaVideoPlayer' is imported here
2026-10-23T22:25:17.9459623Z  154 โ”‚ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-23T22:25:17.9459727Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9459828Z   help: Consider removing this import.
2026-10-23T22:25:17.9459831Z
2026-10-23T22:25:17.9460059Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-23T22:25:17.9460199Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:157:3]
2026-10-23T22:25:17.9460283Z  156 โ”‚   attachmentVideoPreviewSource,
2026-10-23T22:25:17.9460362Z  157 โ”‚   mediaVideoPreviewUri,
2026-10-23T22:25:17.9460454Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9460615Z      ยท             โ•ฐโ”€โ”€ 'mediaVideoPreviewUri' is imported here
2026-10-23T22:25:17.9460690Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T22:25:17.9460744Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9460850Z   help: Consider removing this import.
2026-10-23T22:25:17.9460855Z
2026-10-23T22:25:17.9461087Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-23T22:25:17.9461220Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:158:3]
2026-10-23T22:25:17.9461294Z  157 โ”‚   mediaVideoPreviewUri,
2026-10-23T22:25:17.9461416Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T22:25:17.9461513Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9461672Z      ยท              โ•ฐโ”€โ”€ 'mediaVideoThumbnailKey' is imported here
2026-10-23T22:25:17.9461763Z  159 โ”‚   type MediaVideoPreviewSource,
2026-10-23T22:25:17.9461821Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9461921Z   help: Consider removing this import.
2026-10-23T22:25:17.9461924Z
2026-10-23T22:25:17.9462144Z   โš  eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-23T22:25:17.9462285Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:159:8]
2026-10-23T22:25:17.9462361Z  158 โ”‚   mediaVideoThumbnailKey,
2026-10-23T22:25:17.9462444Z  159 โ”‚   type MediaVideoPreviewSource,
2026-10-23T22:25:17.9462542Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9462710Z      ยท                   โ•ฐโ”€โ”€ 'MediaVideoPreviewSource' is imported here
2026-10-23T22:25:17.9462801Z  160 โ”‚ } from "../../lib/videoPreviewSource";
2026-10-23T22:25:17.9462856Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9462954Z   help: Consider removing this import.
2026-10-23T22:25:17.9462957Z
2026-10-23T22:25:17.9463167Z   โš  eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-23T22:25:17.9463308Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:167:15]
2026-10-23T22:25:17.9463496Z  166 โ”‚ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-23T22:25:17.9463637Z  167 โ”‚ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-23T22:25:17.9463733Z      ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9463888Z      ยท                      โ•ฐโ”€โ”€ 'ReviewDiffTheme' is imported here
2026-10-23T22:25:17.9463951Z  168 โ”‚ import {
2026-10-23T22:25:17.9464003Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9464107Z   help: Consider removing this import.
2026-10-23T22:25:17.9464109Z
2026-10-23T22:25:17.9464346Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-23T22:25:17.9464594Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:182:3]
2026-10-23T22:25:17.9464707Z  181 โ”‚ import {
2026-10-23T22:25:17.9464788Z  182 โ”‚   resolveMarkdownFontSizes,
2026-10-23T22:25:17.9464882Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9465048Z      ยท               โ•ฐโ”€โ”€ 'resolveMarkdownFontSizes' is imported here
2026-10-23T22:25:17.9465139Z  183 โ”‚   resolveNativeMarkdownTypography,
2026-10-23T22:25:17.9465201Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9465301Z   help: Consider removing this import.
2026-10-23T22:25:17.9465303Z
2026-10-23T22:25:17.9465533Z   โš  eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-23T22:25:17.9465670Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:187:10]
2026-10-23T22:25:17.9465812Z  186 โ”‚ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-23T22:25:17.9465958Z  187 โ”‚ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-23T22:25:17.9466059Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9466229Z      ยท                     โ•ฐโ”€โ”€ 'markdownLinkIconSource' is imported here
2026-10-23T22:25:17.9466287Z  188 โ”‚ import {
2026-10-23T22:25:17.9466341Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9466441Z   help: Consider removing this import.
2026-10-23T22:25:17.9466444Z
2026-10-23T22:25:17.9466713Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-23T22:25:17.9466852Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:190:3]
2026-10-23T22:25:17.9466938Z  189 โ”‚   normalizeNativeMarkdownUrl,
2026-10-23T22:25:17.9467044Z  190 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-23T22:25:17.9467165Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9467364Z      ยท                     โ•ฐโ”€โ”€ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-23T22:25:17.9467444Z  191 โ”‚   resolveMarkdownLinkIcon,
2026-10-23T22:25:17.9467500Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9467607Z   help: Consider removing this import.
2026-10-23T22:25:17.9467609Z
2026-10-23T22:25:17.9467838Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-23T22:25:17.9467978Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:191:3]
2026-10-23T22:25:17.9468081Z  190 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-23T22:25:17.9468163Z  191 โ”‚   resolveMarkdownLinkIcon,
2026-10-23T22:25:17.9468365Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9468579Z      ยท              โ•ฐโ”€โ”€ 'resolveMarkdownLinkIcon' is imported here
2026-10-23T22:25:17.9468672Z  192 โ”‚   resolveMarkdownLinkPresentation,
2026-10-23T22:25:17.9468728Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9468827Z   help: Consider removing this import.
2026-10-23T22:25:17.9468830Z
2026-10-23T22:25:17.9469066Z   โš  eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-23T22:25:17.9469206Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:230:10]
2026-10-23T22:25:17.9469318Z  229 โ”‚ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-23T22:25:17.9469467Z  230 โ”‚ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-23T22:25:17.9469571Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9469754Z      ยท                      โ•ฐโ”€โ”€ 'useMarkdownCodeHighlight' is imported here
2026-10-23T22:25:17.9469822Z  231 โ”‚ import {
2026-10-23T22:25:17.9469874Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9469981Z   help: Consider removing this import.
2026-10-23T22:25:17.9469984Z
2026-10-23T22:25:17.9470385Z   โš  eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-23T22:25:17.9470525Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:234:3]
2026-10-23T22:25:17.9470596Z  233 โ”‚   useAssetUrl,
2026-10-23T22:25:17.9470674Z  234 โ”‚   useAssetUrlState,
2026-10-23T22:25:17.9470762Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9470912Z      ยท           โ•ฐโ”€โ”€ 'useAssetUrlState' is imported here
2026-10-23T22:25:17.9470990Z  235 โ”‚   useRefreshAssetUrl,
2026-10-23T22:25:17.9471051Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9471153Z   help: Consider removing this import.
2026-10-23T22:25:17.9471155Z
2026-10-23T22:25:17.9471394Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9471546Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2123:7]
2026-10-23T22:25:17.9471623Z  2122 โ”‚     setExpandedFile(null);
2026-10-23T22:25:17.9471791Z  2123 โ”‚   }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-23T22:25:17.9472020Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9472326Z       ยท                โ”‚                  โ”‚                       โ•ฐโ”€โ”€ Unnecessary dependency `props.contentPresentation.kind`
2026-10-23T22:25:17.9472532Z       ยท                โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `props.threadId`
2026-10-23T22:25:17.9472704Z       ยท                โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-23T22:25:17.9472857Z  2124 โ”‚   const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-23T22:25:17.9472914Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9473218Z   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-23T22:25:17.9473570Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9473573Z
2026-10-23T22:25:17.9474046Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9474263Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2590:7]
2026-10-23T22:25:17.9474368Z  2589 โ”‚     reportHeaderMaterialVisibility(false);
2026-10-23T22:25:17.9474491Z  2590 โ”‚   }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-23T22:25:17.9474580Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9474739Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `feedThreadKey`
2026-10-23T22:25:17.9474798Z  2591 โ”‚
2026-10-23T22:25:17.9474853Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9475156Z   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-23T22:25:17.9475484Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9475489Z
2026-10-23T22:25:17.9475701Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9475836Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2606:7]
2026-10-23T22:25:17.9475898Z  2605 โ”‚     }
2026-10-23T22:25:17.9476040Z  2606 โ”‚   }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-23T22:25:17.9476127Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9476278Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `listMountKey`
2026-10-23T22:25:17.9476336Z  2607 โ”‚
2026-10-23T22:25:17.9476395Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9482977Z   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-23T22:25:17.9483457Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9483468Z
2026-10-23T22:25:17.9483691Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9483837Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2763:7]
2026-10-23T22:25:17.9483901Z  2762 โ”‚     }
2026-10-23T22:25:17.9484093Z  2763 โ”‚   }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-23T22:25:17.9484304Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9484574Z       ยท              โ”‚                  โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkRows`
2026-10-23T22:25:17.9484794Z       ยท              โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkGroups`
2026-10-23T22:25:17.9484953Z       ยท              โ•ฐโ”€โ”€ Unnecessary dependency `expandedTurnIds`
2026-10-23T22:25:17.9485009Z  2764 โ”‚
2026-10-23T22:25:17.9485066Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9485369Z   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-23T22:25:17.9485693Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9485695Z
2026-10-23T22:25:17.9486139Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9486413Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:605:9]
2026-10-23T22:25:17.9486494Z  604 โ”‚       };
2026-10-23T22:25:17.9486620Z  605 โ”‚     }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-23T22:25:17.9486823Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9487066Z      ยท                  โ”‚                 โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `httpBaseUrl`
2026-10-23T22:25:17.9487272Z      ยท                  โ”‚                 โ•ฐโ”€โ”€ Unnecessary dependency `attachment.id`
2026-10-23T22:25:17.9487454Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-23T22:25:17.9487519Z  606 โ”‚   );
2026-10-23T22:25:17.9487571Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9487899Z   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-23T22:25:17.9488219Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9488223Z
2026-10-23T22:25:17.9488461Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-23T22:25:17.9488596Z      โ•ญโ”€[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-23T22:25:17.9488654Z  730 โ”‚       );
2026-10-23T22:25:17.9488838Z  731 โ”‚       const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-23T22:25:17.9488945Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9489072Z  732 โ”‚       expect(snapshot?.history).toBe("aa๐Ÿ˜€\rEND");
2026-10-23T22:25:17.9489127Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9489307Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-23T22:25:17.9489310Z
2026-10-23T22:25:17.9489586Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9489750Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:512:5]
2026-10-23T22:25:17.9489811Z  510 โ”‚   }, []);
2026-10-23T22:25:17.9489885Z  511 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9489964Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9490108Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9490203Z  512 โ”‚     setKeyboardStateSuspect(false);
2026-10-23T22:25:17.9490303Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9490481Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9490590Z  513 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-23T22:25:17.9490642Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9491261Z   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-23T22:25:17.9491780Z   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-23T22:25:17.9491825Z
2026-10-23T22:25:17.9492091Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9492249Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:872:7]
2026-10-23T22:25:17.9492407Z  869 โ”‚   const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
2026-10-23T22:25:17.9492508Z  870 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9492598Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9492731Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9492894Z  871 โ”‚     if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
2026-10-23T22:25:17.9493023Z  872 โ”‚       setLastKnownKeyboardHeight(liveKeyboardHeight);
2026-10-23T22:25:17.9493132Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9493314Z      ยท                    โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9493371Z  873 โ”‚     }
2026-10-23T22:25:17.9493425Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9494036Z   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-23T22:25:17.9494364Z   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-23T22:25:17.9494366Z
2026-10-23T22:25:17.9494632Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9494793Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1119:5]
2026-10-23T22:25:17.9494853Z  1117 โ”‚
2026-10-23T22:25:17.9494925Z  1118 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9495008Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9495142Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9495226Z  1119 โ”‚     setAnchorMessageId(null);
2026-10-23T22:25:17.9495316Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9495496Z       ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9495579Z  1120 โ”‚     setSubmittedMessageId(null);
2026-10-23T22:25:17.9495636Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9496363Z   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-23T22:25:17.9496737Z   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-23T22:25:17.9496739Z
2026-10-23T22:25:17.9496949Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9497103Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:513:7]
2026-10-23T22:25:17.9497196Z  512 โ”‚     setKeyboardStateSuspect(false);
2026-10-23T22:25:17.9497305Z  513 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-23T22:25:17.9497456Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9497666Z      ยท               โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `liveKeyboardHeight`
2026-10-23T22:25:17.9497830Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `isKeyboardVisible`
2026-10-23T22:25:17.9497964Z  514 โ”‚   const handleOwnedInputFocusChange = (focused: boolean) => {
2026-10-23T22:25:17.9498021Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9498321Z   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-23T22:25:17.9498639Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9498645Z
2026-10-23T22:25:17.9498848Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9499006Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1067:7]
2026-10-23T22:25:17.9499099Z  1066 โ”‚     userInputInsetProgress.set(1);
2026-10-23T22:25:17.9499262Z  1067 โ”‚   }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
2026-10-23T22:25:17.9499363Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9499548Z       ยท                   โ•ฐโ”€โ”€ Unnecessary dependency `activeUserInputRequestId`
2026-10-23T22:25:17.9499660Z  1068 โ”‚   const showContent = props.showContent ?? true;
2026-10-23T22:25:17.9499712Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9500018Z   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-23T22:25:17.9500334Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9500337Z
2026-10-23T22:25:17.9500539Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9500700Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1125:15]
2026-10-23T22:25:17.9500770Z  1124 โ”‚     freeze.set(false);
2026-10-23T22:25:17.9500857Z  1125 โ”‚   }, [freeze, selectedThreadKey]);
2026-10-23T22:25:17.9500957Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9501407Z       ยท                       โ•ฐโ”€โ”€ Unnecessary dependency `selectedThreadKey`
2026-10-23T22:25:17.9501534Z  1126 โ”‚
2026-10-23T22:25:17.9501589Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9501888Z   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-23T22:25:17.9502204Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9502206Z
2026-10-23T22:25:17.9502364Z   โš  react(immutability): This value cannot be modified
2026-10-23T22:25:17.9502521Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:955:5]
2026-10-23T22:25:17.9502638Z  950 โ”‚   const composerPopoverHeight = useSharedValue(0);
2026-10-23T22:25:17.9502749Z  951 โ”‚   const floatingControlCoverage = useSharedValue(
2026-10-23T22:25:17.9502853Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9503029Z      ยท                    โ•ฐโ”€โ”€ `floatingControlCoverage` originates here
2026-10-23T22:25:17.9503226Z  952 โ”‚     showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-23T22:25:17.9503312Z  953 โ”‚   );
2026-10-23T22:25:17.9503417Z  954 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9503537Z  955 โ”‚     floatingControlCoverage.value = withTiming(
2026-10-23T22:25:17.9503634Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9503802Z      ยท                โ•ฐโ”€โ”€ `floatingControlCoverage` cannot be modified
2026-10-23T22:25:17.9503935Z  956 โ”‚       showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-23T22:25:17.9503987Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9504268Z   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-23T22:25:17.9504587Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T22:25:17.9504590Z
2026-10-23T22:25:17.9504751Z   โš  react(immutability): This value cannot be modified
2026-10-23T22:25:17.9504904Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:973:7]
2026-10-23T22:25:17.9505098Z  963 โ”‚   const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
2026-10-23T22:25:17.9505230Z  964 โ”‚   const combinedContentInsetEndAdjustment = useSharedValue(
2026-10-23T22:25:17.9505385Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9505674Z      ยท                         โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` originates here
2026-10-23T22:25:17.9505820Z  965 โ”‚     Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
2026-10-23T22:25:17.9505882Z  966 โ”‚   );
2026-10-23T22:25:17.9505968Z  967 โ”‚   useAnimatedReaction(
2026-10-23T22:25:17.9506032Z  968 โ”‚     () =>
2026-10-23T22:25:17.9506135Z  969 โ”‚       contentInsetEndAdjustment.value +
2026-10-23T22:25:17.9506227Z  970 โ”‚       floatingControlCoverage.value +
2026-10-23T22:25:17.9506430Z  971 โ”‚       (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
2026-10-23T22:25:17.9506494Z  972 โ”‚     (value) => {
2026-10-23T22:25:17.9506615Z  973 โ”‚       combinedContentInsetEndAdjustment.value = value;
2026-10-23T22:25:17.9506732Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9507087Z      ยท                       โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` cannot be modified
2026-10-23T22:25:17.9507186Z  974 โ”‚     },
2026-10-23T22:25:17.9507245Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9507517Z   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-23T22:25:17.9507834Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T22:25:17.9507837Z
2026-10-23T22:25:17.9508100Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9508277Z     โ•ญโ”€[apps/mobile/src/features/threads/thread-inspector-content-stack.tsx:60:5]
2026-10-23T22:25:17.9508336Z  58 โ”‚
2026-10-23T22:25:17.9508413Z  59 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9508498Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9508635Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9508722Z  60 โ”‚     setMountedModes((current) => {
2026-10-23T22:25:17.9508808Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9508983Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9509069Z  61 โ”‚       if (current.has(props.mode)) {
2026-10-23T22:25:17.9509128Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9509742Z   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-23T22:25:17.9510082Z   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-23T22:25:17.9510087Z
2026-10-23T22:25:17.9510545Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-23T22:25:17.9510788Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-23T22:25:17.9510971Z  601 โ”‚   const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-23T22:25:17.9511057Z  602 โ”‚   const gesture = Gesture.Pan()
2026-10-23T22:25:17.9511155Z      ยท                           โ”€โ”ฌโ”€
2026-10-23T22:25:17.9511302Z      ยท                            โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-23T22:25:17.9511464Z  603 โ”‚     .enabled(!props.disabled)
2026-10-23T22:25:17.9511524Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9511823Z   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-23T22:25:17.9512281Z   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-23T22:25:17.9512285Z
2026-10-23T22:25:17.9512555Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9512714Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
2026-10-23T22:25:17.9512859Z  355 โ”‚   }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
2026-10-23T22:25:17.9512932Z  356 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9513245Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9513461Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9513560Z  357 โ”‚     if (!isReturningToProjectPicker) {
2026-10-23T22:25:17.9513624Z  358 โ”‚       return;
2026-10-23T22:25:17.9513683Z  359 โ”‚     }
2026-10-23T22:25:17.9513790Z  360 โ”‚     if (requestedInitialProjectAvailable) {
2026-10-23T22:25:17.9513892Z  361 โ”‚       setIsReturningToProjectPicker(false);
2026-10-23T22:25:17.9513999Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9514181Z      ยท                     โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9514250Z  362 โ”‚       return;
2026-10-23T22:25:17.9514308Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9514926Z   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-23T22:25:17.9515265Z   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-23T22:25:17.9515268Z
2026-10-23T22:25:17.9515532Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9515689Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
2026-10-23T22:25:17.9515747Z  447 โ”‚
2026-10-23T22:25:17.9515818Z  448 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9515896Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9516035Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9516146Z  449 โ”‚     if (props.pendingTaskId || props.draftId) {
2026-10-23T22:25:17.9516209Z  450 โ”‚       return;
2026-10-23T22:25:17.9516268Z  451 โ”‚     }
2026-10-23T22:25:17.9516418Z  452 โ”‚     if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
2026-10-23T22:25:17.9516563Z  453 โ”‚       lastInitialProjectRefRef.current = props.initialProjectRef;
2026-10-23T22:25:17.9516673Z  454 โ”‚       appliedInitialProjectKeyRef.current = null;
2026-10-23T22:25:17.9516732Z  455 โ”‚     }
2026-10-23T22:25:17.9516884Z  456 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T22:25:17.9517019Z  457 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T22:25:17.9517127Z  458 โ”‚     if (initialEnvironmentId && initialProjectId) {
2026-10-23T22:25:17.9517286Z  459 โ”‚       const directProject =
2026-10-23T22:25:17.9517399Z  460 โ”‚         projects.find(
2026-10-23T22:25:17.9517473Z  461 โ”‚           (project) =>
2026-10-23T22:25:17.9517651Z  462 โ”‚             project.environmentId === initialEnvironmentId && project.id === initialProjectId,
2026-10-23T22:25:17.9517722Z  463 โ”‚         ) ?? null;
2026-10-23T22:25:17.9517782Z  464 โ”‚
2026-10-23T22:25:17.9517859Z  465 โ”‚       if (directProject) {
2026-10-23T22:25:17.9518001Z  466 โ”‚         // Apply the route's project once. Re-applying on every change would
2026-10-23T22:25:17.9518145Z  467 โ”‚         // instantly revert environment/project switches made in the picker.
2026-10-23T22:25:17.9518314Z  468 โ”‚         const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
2026-10-23T22:25:17.9518460Z  469 โ”‚         if (appliedInitialProjectKeyRef.current === directProjectKey) {
2026-10-23T22:25:17.9518529Z  470 โ”‚           return;
2026-10-23T22:25:17.9518595Z  471 โ”‚         }
2026-10-23T22:25:17.9518700Z  472 โ”‚         if (props.initialProjectRef?.branch) {
2026-10-23T22:25:17.9518767Z  473 โ”‚           if (
2026-10-23T22:25:17.9518913Z  474 โ”‚             selectedProject?.environmentId !== directProject.environmentId ||
2026-10-23T22:25:17.9519023Z  475 โ”‚             selectedProject.id !== directProject.id
2026-10-23T22:25:17.9519086Z  476 โ”‚           ) {
2026-10-23T22:25:17.9519175Z  477 โ”‚             setProject(directProject);
2026-10-23T22:25:17.9519241Z  478 โ”‚             return;
2026-10-23T22:25:17.9519306Z  479 โ”‚           }
2026-10-23T22:25:17.9519395Z  480 โ”‚           if (!flow.draftKey) return;
2026-10-23T22:25:17.9519541Z  481 โ”‚           // The route completes checkout before mounting this composer. Local
2026-10-23T22:25:17.9519698Z  482 โ”‚           // mode reuses an existing worktree; worktree mode would create another.
2026-10-23T22:25:17.9519822Z  483 โ”‚           updateComposerDraftSettings(flow.draftKey, {
2026-10-23T22:25:17.9519908Z  484 โ”‚             workspaceSelection: {
2026-10-23T22:25:17.9519980Z  485 โ”‚               mode: "local",
2026-10-23T22:25:17.9520093Z  486 โ”‚               branch: props.initialProjectRef.branch,
2026-10-23T22:25:17.9520236Z  487 โ”‚               worktreePath: props.initialProjectRef.worktreePath ?? null,
2026-10-23T22:25:17.9520322Z  488 โ”‚               startFromOrigin: false,
2026-10-23T22:25:17.9520385Z  489 โ”‚             },
2026-10-23T22:25:17.9520450Z  490 โ”‚           });
2026-10-23T22:25:17.9520511Z  491 โ”‚         }
2026-10-23T22:25:17.9520645Z  492 โ”‚         appliedInitialProjectKeyRef.current = directProjectKey;
2026-10-23T22:25:17.9520706Z  493 โ”‚         if (
2026-10-23T22:25:17.9520854Z  494 โ”‚           selectedProject?.environmentId === directProject.environmentId &&
2026-10-23T22:25:17.9520965Z  495 โ”‚           selectedProject.id === directProject.id
2026-10-23T22:25:17.9521036Z  496 โ”‚         ) {
2026-10-23T22:25:17.9521101Z  497 โ”‚           return;
2026-10-23T22:25:17.9521164Z  498 โ”‚         }
2026-10-23T22:25:17.9521253Z  499 โ”‚         setProject(directProject);
2026-10-23T22:25:17.9521319Z  500 โ”‚         return;
2026-10-23T22:25:17.9521411Z  501 โ”‚       }
2026-10-23T22:25:17.9521475Z  502 โ”‚
2026-10-23T22:25:17.9521567Z  503 โ”‚       if (projects.length > 0) {
2026-10-23T22:25:17.9521670Z  504 โ”‚         setIsReturningToProjectPicker(true);
2026-10-23T22:25:17.9521783Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9521976Z      ยท                       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9522035Z  505 โ”‚       }
2026-10-23T22:25:17.9522094Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9522787Z   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-23T22:25:17.9523170Z   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-23T22:25:17.9523173Z
2026-10-23T22:25:17.9523439Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9523599Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
2026-10-23T22:25:17.9523659Z  545 โ”‚
2026-10-23T22:25:17.9523730Z  546 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9523811Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9523946Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9524042Z  547 โ”‚     const shareId = props.incomingShareId;
2026-10-23T22:25:17.9524133Z  548 โ”‚     const draftKey = flow.draftKey;
2026-10-23T22:25:17.9524245Z  549 โ”‚     const destinationProject = selectedProject;
2026-10-23T22:25:17.9524395Z  550 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-23T22:25:17.9524531Z  551 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-23T22:25:17.9524630Z  552 โ”‚     const selectedProjectMatchesRoute =
2026-10-23T22:25:17.9524713Z  553 โ”‚       !initialEnvironmentId ||
2026-10-23T22:25:17.9524788Z  554 โ”‚       !initialProjectId ||
2026-10-23T22:25:17.9524922Z  555 โ”‚       (destinationProject?.environmentId === initialEnvironmentId &&
2026-10-23T22:25:17.9525041Z  556 โ”‚         destinationProject.id === initialProjectId);
2026-10-23T22:25:17.9525106Z  557 โ”‚     if (
2026-10-23T22:25:17.9525174Z  558 โ”‚       !shareId ||
2026-10-23T22:25:17.9525241Z  559 โ”‚       !draftKey ||
2026-10-23T22:25:17.9525324Z  560 โ”‚       !destinationProject ||
2026-10-23T22:25:17.9525420Z  561 โ”‚       !selectedProjectMatchesRoute ||
2026-10-23T22:25:17.9525518Z  562 โ”‚       cancelledIncomingShareId === shareId
2026-10-23T22:25:17.9525575Z  563 โ”‚     ) {
2026-10-23T22:25:17.9525640Z  564 โ”‚       return;
2026-10-23T22:25:17.9525701Z  565 โ”‚     }
2026-10-23T22:25:17.9525804Z  566 โ”‚     const importKey = `${shareId}:${draftKey}`;
2026-10-23T22:25:17.9525862Z  567 โ”‚     if (
2026-10-23T22:25:17.9525981Z  568 โ”‚       startedShareImportKeyRef.current === importKey ||
2026-10-23T22:25:17.9526150Z  569 โ”‚       cancellingShareImportKeyRef.current === importKey
2026-10-23T22:25:17.9526271Z  570 โ”‚     ) {
2026-10-23T22:25:17.9526367Z  571 โ”‚       return;
2026-10-23T22:25:17.9526457Z  572 โ”‚     }
2026-10-23T22:25:17.9526515Z  573 โ”‚
2026-10-23T22:25:17.9526587Z  574 โ”‚     if (!incomingShare) {
2026-10-23T22:25:17.9526802Z  575 โ”‚       if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
2026-10-23T22:25:17.9526942Z  576 โ”‚         alertedUnavailableIncomingShareIdRef.current = shareId;
2026-10-23T22:25:17.9527014Z  577 โ”‚         Dialog.alert(
2026-10-23T22:25:17.9527103Z  578 โ”‚           "Shared content unavailable",
2026-10-23T22:25:17.9527287Z  579 โ”‚           "The shared content is no longer in the inbox. You can continue editing this task draft.",
2026-10-23T22:25:17.9527351Z  580 โ”‚         );
2026-10-23T22:25:17.9527428Z  581 โ”‚       }
2026-10-23T22:25:17.9527490Z  582 โ”‚       return;
2026-10-23T22:25:17.9527654Z  583 โ”‚     }
2026-10-23T22:25:17.9527777Z  584 โ”‚
2026-10-23T22:25:17.9527844Z  585 โ”‚     if (
2026-10-23T22:25:17.9528015Z  586 โ”‚       incomingShare.attachments.some((attachment) => attachment.type === "file") &&
2026-10-23T22:25:17.9528124Z  587 โ”‚       selectedEnvironmentServerConfig === null
2026-10-23T22:25:17.9528183Z  588 โ”‚     ) {
2026-10-23T22:25:17.9528248Z  589 โ”‚       return;
2026-10-23T22:25:17.9528303Z  590 โ”‚     }
2026-10-23T22:25:17.9528360Z  591 โ”‚
2026-10-23T22:25:17.9528504Z  592 โ”‚     if (alertedUnavailableIncomingShareIdRef.current === shareId) {
2026-10-23T22:25:17.9528633Z  593 โ”‚       alertedUnavailableIncomingShareIdRef.current = null;
2026-10-23T22:25:17.9528688Z  594 โ”‚     }
2026-10-23T22:25:17.9528802Z  595 โ”‚     startedShareImportKeyRef.current = importKey;
2026-10-23T22:25:17.9528880Z  596 โ”‚     const draftBackup =
2026-10-23T22:25:17.9529077Z  597 โ”‚       shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
2026-10-23T22:25:17.9529225Z  598 โ”‚     shareImportDraftBackupRef.current.set(importKey, draftBackup);
2026-10-23T22:25:17.9529322Z  599 โ”‚     const importToken = Symbol(importKey);
2026-10-23T22:25:17.9529409Z  600 โ”‚     let didReserveShare = false;
2026-10-23T22:25:17.9529490Z  601 โ”‚     let didConsumeShare = false;
2026-10-23T22:25:17.9529580Z  602 โ”‚     let needsDraftRestore = false;
2026-10-23T22:25:17.9529698Z  603 โ”‚     activeShareImportTokenRef.current = importToken;
2026-10-23T22:25:17.9529787Z  604 โ”‚     setImportingShareKey(importKey);
2026-10-23T22:25:17.9529886Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9530072Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9530148Z  605 โ”‚     void (async () => {
2026-10-23T22:25:17.9530206Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9530827Z   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-23T22:25:17.9531161Z   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-23T22:25:17.9531165Z
2026-10-23T22:25:17.9531426Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9531604Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
2026-10-23T22:25:17.9531688Z  523 โ”‚     props.initialProjectRef,
2026-10-23T22:25:17.9531767Z  524 โ”‚     props.incomingShareId,
2026-10-23T22:25:17.9531867Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9532046Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `props.incomingShareId`
2026-10-23T22:25:17.9532121Z  525 โ”‚     props.pendingTaskId,
2026-10-23T22:25:17.9532173Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9532478Z   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-23T22:25:17.9532800Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9532802Z
2026-10-23T22:25:17.9533030Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T22:25:17.9533276Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
2026-10-23T22:25:17.9533453Z  542 โ”‚     loadedBranchesProjectKeyRef.current = projectKey;
2026-10-23T22:25:17.9533525Z  543 โ”‚     flow.loadBranches();
2026-10-23T22:25:17.9533602Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-23T22:25:17.9533735Z      ยท       โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-23T22:25:17.9533831Z  544 โ”‚   }, [flow.loadBranches, selectedProject]);
2026-10-23T22:25:17.9533924Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9534130Z      ยท               โ•ฐโ”€โ”€ Overly precise dependency `flow.loadBranches`, use `flow` instead
2026-10-23T22:25:17.9534188Z  545 โ”‚
2026-10-23T22:25:17.9534242Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9534683Z   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-23T22:25:17.9535007Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9535009Z
2026-10-23T22:25:17.9535216Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9535377Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
2026-10-23T22:25:17.9535444Z  765 โ”‚     flow.draftKey,
2026-10-23T22:25:17.9535529Z  766 โ”‚     hasImportedIncomingShare,
2026-10-23T22:25:17.9535627Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9535807Z      ยท                 โ•ฐโ”€โ”€ Unnecessary dependency `hasImportedIncomingShare`
2026-10-23T22:25:17.9535880Z  767 โ”‚     incomingShare,
2026-10-23T22:25:17.9535974Z  768 โ”‚     isIncomingShareInboxLoading,
2026-10-23T22:25:17.9536078Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9536267Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `isIncomingShareInboxLoading`
2026-10-23T22:25:17.9536350Z  769 โ”‚     isIncomingShareUnavailable,
2026-10-23T22:25:17.9536429Z  770 โ”‚     props.incomingShareId,
2026-10-23T22:25:17.9536529Z  771 โ”‚     props.initialProjectRef?.environmentId,
2026-10-23T22:25:17.9536621Z  772 โ”‚     props.initialProjectRef?.projectId,
2026-10-23T22:25:17.9536707Z  773 โ”‚     releaseShareReservation,
2026-10-23T22:25:17.9536778Z  774 โ”‚     reserveShare,
2026-10-23T22:25:17.9536869Z  775 โ”‚     selectedEnvironmentServerConfig,
2026-10-23T22:25:17.9536938Z  776 โ”‚     selectedProject,
2026-10-23T22:25:17.9537022Z  777 โ”‚     shareImportAttempt,
2026-10-23T22:25:17.9537115Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9537284Z      ยท              โ•ฐโ”€โ”€ Unnecessary dependency `shareImportAttempt`
2026-10-23T22:25:17.9537339Z  778 โ”‚   ]);
2026-10-23T22:25:17.9537397Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9537696Z   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-23T22:25:17.9538014Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9538017Z
2026-10-23T22:25:17.9538237Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-23T22:25:17.9538461Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:772:7]
2026-10-23T22:25:17.9538613Z  771 โ”‚     if (settingsSheetPresentation.isActive) {
2026-10-23T22:25:17.9538751Z  772 โ”‚       settingsRoutePresentation.present(settingsRouteSession);
2026-10-23T22:25:17.9538852Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9539028Z      ยท                   โ•ฐโ”€โ”€ Missing dependency `settingsRoutePresentation`
2026-10-23T22:25:17.9539087Z  773 โ”‚     }
2026-10-23T22:25:17.9539297Z  774 โ”‚   }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-23T22:25:17.9539413Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9539698Z      ยท                       โ•ฐโ”€โ”€ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-23T22:25:17.9539761Z  775 โ”‚
2026-10-23T22:25:17.9539822Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9540252Z   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-23T22:25:17.9540567Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9540573Z
2026-10-23T22:25:17.9540733Z   โš  react(immutability): This value cannot be modified
2026-10-23T22:25:17.9540883Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:390:5]
2026-10-23T22:25:17.9541048Z  386 โ”‚     typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-23T22:25:17.9541196Z  387 โ”‚   const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-23T22:25:17.9541291Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9541526Z      ยท                   โ•ฐโ”€โ”€ `animatedBorderRadius` originates here
2026-10-23T22:25:17.9541691Z  388 โ”‚   const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-23T22:25:17.9541766Z  389 โ”‚   useLayoutEffect(() => {
2026-10-23T22:25:17.9541873Z  390 โ”‚     animatedBorderRadius.value = shouldAnimate
2026-10-23T22:25:17.9541966Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9542130Z      ยท               โ•ฐโ”€โ”€ `animatedBorderRadius` cannot be modified
2026-10-23T22:25:17.9542226Z  391 โ”‚       ? withTiming(targetBorderRadius, {
2026-10-23T22:25:17.9542277Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9542636Z   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-23T22:25:17.9542995Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-23T22:25:17.9542998Z
2026-10-23T22:25:17.9543266Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9543434Z      โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:444:5]
2026-10-23T22:25:17.9543497Z  434 โ”‚       : null;
2026-10-23T22:25:17.9543572Z  435 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9543649Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9543781Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9543844Z  436 โ”‚     if (
2026-10-23T22:25:17.9543933Z  437 โ”‚       props.active === false ||
2026-10-23T22:25:17.9544019Z  438 โ”‚       activeDraftKey !== null ||
2026-10-23T22:25:17.9544104Z  439 โ”‚       editingPendingTask !== null ||
2026-10-23T22:25:17.9544189Z  440 โ”‚       selectedProject === null
2026-10-23T22:25:17.9544250Z  441 โ”‚     ) {
2026-10-23T22:25:17.9544319Z  442 โ”‚       return;
2026-10-23T22:25:17.9544374Z  443 โ”‚     }
2026-10-23T22:25:17.9544449Z  444 โ”‚     setActiveDraftKey(
2026-10-23T22:25:17.9544537Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9544712Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9544786Z  445 โ”‚       createNewTaskDraft({
2026-10-23T22:25:17.9544842Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9545465Z   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-23T22:25:17.9545801Z   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-23T22:25:17.9545803Z
2026-10-23T22:25:17.9546059Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9546228Z       โ•ญโ”€[apps/mobile/src/features/threads/new-task-flow-provider.tsx:1244:36]
2026-10-23T22:25:17.9546343Z  1243 โ”‚     <ActiveNewTaskContext value={activeNewTask}>
2026-10-23T22:25:17.9546557Z  1244 โ”‚       <NewTaskFlowContext.Provider value={value}>{props.children}</NewTaskFlowContext.Provider>
2026-10-23T22:25:17.9546681Z       ยท                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9546760Z  1245 โ”‚     </ActiveNewTaskContext>
2026-10-23T22:25:17.9546817Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9547052Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9547201Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9547203Z
2026-10-23T22:25:17.9547395Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-23T22:25:17.9547519Z    โ•ญโ”€[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-23T22:25:17.9547581Z  7 โ”‚     () =>
2026-10-23T22:25:17.9547652Z  8 โ”‚       Gesture.Hover()
2026-10-23T22:25:17.9547731Z    ยท               โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9547944Z    ยท                 โ•ฐโ”€โ”€ `Hover` may be a component
2026-10-23T22:25:17.9548065Z  9 โ”‚         .manualActivation(true)
2026-10-23T22:25:17.9548120Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9548410Z   help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-23T22:25:17.9548879Z   note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-23T22:25:17.9548882Z
2026-10-23T22:25:17.9549036Z   โš  react(refs): Cannot access refs during render
2026-10-23T22:25:17.9549163Z     โ•ญโ”€[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-23T22:25:17.9549356Z  53 โ”‚         const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-23T22:25:17.9549538Z  54 โ”‚ โ•ญโ”€โ–ถ     children = cloneElement(child, {
2026-10-23T22:25:17.9549651Z  55 โ”‚ โ”‚         onTouchStart: (event) => {
2026-10-23T22:25:17.9549823Z  56 โ”‚ โ”‚           // Reset for a new touch, not onPressIn, which also fires when a
2026-10-23T22:25:17.9549993Z  57 โ”‚ โ”‚           // finger moves out of the row and back during the same gesture.
2026-10-23T22:25:17.9550384Z  58 โ”‚ โ”‚           menuPress.current.isPreparing = false;
2026-10-23T22:25:17.9550647Z  59 โ”‚ โ”‚           menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-23T22:25:17.9550775Z  60 โ”‚ โ”‚           pendingPress.current = null;
2026-10-23T22:25:17.9550916Z  61 โ”‚ โ”‚           child.props.onTouchStart?.(event);
2026-10-23T22:25:17.9550999Z  62 โ”‚ โ”‚         },
2026-10-23T22:25:17.9551107Z  63 โ”‚ โ”‚         onPress: (event) => {
2026-10-23T22:25:17.9551290Z  64 โ”‚ โ”‚           // Accessibility clicks have no touch identifier and must not inherit
2026-10-23T22:25:17.9551479Z  65 โ”‚ โ”‚           // cancellation from a previous physical gesture.
2026-10-23T22:25:17.9551662Z  66 โ”‚ โ”‚           const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-23T22:25:17.9551856Z  67 โ”‚ โ”‚           if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-23T22:25:17.9551948Z  68 โ”‚ โ”‚             return;
2026-10-23T22:25:17.9552033Z  69 โ”‚ โ”‚           }
2026-10-23T22:25:17.9552187Z  70 โ”‚ โ”‚           if (isTouch && menuPress.current.isPreparing) {
2026-10-23T22:25:17.9552368Z  71 โ”‚ โ”‚             // A release can arrive between native menu preparation and display.
2026-10-23T22:25:17.9552540Z  72 โ”‚ โ”‚             // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-23T22:25:17.9552646Z  73 โ”‚ โ”‚             event.persist();
2026-10-23T22:25:17.9552810Z  74 โ”‚ โ”‚             pendingPress.current = () => child.props.onPress?.(event);
2026-10-23T22:25:17.9552897Z  75 โ”‚ โ”‚             return;
2026-10-23T22:25:17.9552980Z  76 โ”‚ โ”‚           }
2026-10-23T22:25:17.9553106Z  77 โ”‚ โ”‚           child.props.onPress?.(event);
2026-10-23T22:25:17.9553188Z  78 โ”‚ โ”‚         },
2026-10-23T22:25:17.9553545Z  79 โ”‚ โ”œโ”€โ–ถ     });
2026-10-23T22:25:17.9553863Z     ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T22:25:17.9553974Z  80 โ”‚         menuProps.onMenuInteractionStart = () => {
2026-10-23T22:25:17.9554032Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9554518Z   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-23T22:25:17.9554823Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T22:25:17.9554828Z
2026-10-23T22:25:17.9555044Z   โš  eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-23T22:25:17.9555193Z     โ•ญโ”€[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-23T22:25:17.9555294Z  23 โ”‚ import * as Deferred from "effect/Deferred";
2026-10-23T22:25:17.9555389Z  24 โ”‚ import * as Duration from "effect/Duration";
2026-10-23T22:25:17.9555473Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9555615Z     ยท                 โ•ฐโ”€โ”€ 'Duration' is imported here
2026-10-23T22:25:17.9555709Z  25 โ”‚ import * as Effect from "effect/Effect";
2026-10-23T22:25:17.9555761Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9555868Z   help: Consider removing this import.
2026-10-23T22:25:17.9555870Z
2026-10-23T22:25:17.9556122Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9556296Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-23T22:25:17.9556363Z  289 โ”‚   return (
2026-10-23T22:25:17.9556506Z  290 โ”‚     <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-23T22:25:17.9556641Z      ยท                                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9556716Z  291 โ”‚       {props.children}
2026-10-23T22:25:17.9556768Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9557003Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9557151Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9557155Z
2026-10-23T22:25:17.9557400Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9557570Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-23T22:25:17.9557634Z  653 โ”‚   return (
2026-10-23T22:25:17.9557759Z  654 โ”‚     <ThreadSettingsSessionContext.Provider value={value}>
2026-10-23T22:25:17.9557880Z      ยท                                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9557955Z  655 โ”‚       {props.children}
2026-10-23T22:25:17.9558007Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9558237Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9558381Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9558383Z
2026-10-23T22:25:17.9558629Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-23T22:25:17.9558883Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-23T22:25:17.9558996Z  1461 โ”‚   return (
2026-10-23T22:25:17.9559165Z  1462 โ”‚     <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-23T22:25:17.9559303Z       ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9559406Z  1463 โ”‚       <ThreadSettingsPickerStack.Navigator
2026-10-23T22:25:17.9559463Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9559691Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-23T22:25:17.9559835Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-23T22:25:17.9559838Z
2026-10-23T22:25:17.9560009Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-23T22:25:17.9560144Z      โ•ญโ”€[apps/server/src/processRunner.test.ts:266:14]
2026-10-23T22:25:17.9560205Z  265 โ”‚
2026-10-23T22:25:17.9560318Z  266 โ”‚   for (const {} of ["timeout", "success"] as const) {
2026-10-23T22:25:17.9560393Z      ยท              โ”€โ”€
2026-10-23T22:25:17.9560452Z  267 โ”‚   }
2026-10-23T22:25:17.9560508Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9560745Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-23T22:25:17.9560748Z
2026-10-23T22:25:17.9560960Z   โš  eslint(no-unused-vars): Identifier 'HookForwarder' is imported but never used.
2026-10-23T22:25:17.9561072Z     โ•ญโ”€[infra/relay/src/http/Api.ts:69:13]
2026-10-23T22:25:17.9561225Z  68 โ”‚ import * as EnvironmentLinks from "../environments/EnvironmentLinks.ts";
2026-10-23T22:25:17.9561379Z  69 โ”‚ import * as HookForwarder from "../hooks/HookForwarder.ts";
2026-10-23T22:25:17.9561479Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9561627Z     ยท                   โ•ฐโ”€โ”€ 'HookForwarder' is imported here
2026-10-23T22:25:17.9561737Z  70 โ”‚ import * as HeldHooks from "../hooks/HeldHooks.ts";
2026-10-23T22:25:17.9561795Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9561897Z   help: Consider removing this import.
2026-10-23T22:25:17.9561902Z
2026-10-23T22:25:17.9562092Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9562239Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-23T22:25:17.9562413Z  120 โ”‚   const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-23T22:25:17.9562508Z  121 โ”‚   const dispatch = vi.fn((_: unknown) =>
2026-10-23T22:25:17.9562601Z      ยท                           โ”ฌ
2026-10-23T22:25:17.9562744Z      ยท                           โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9562855Z  122 โ”‚     (options.dispatchGate ?? Effect.void).pipe(
2026-10-23T22:25:17.9562910Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9563017Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9563020Z
2026-10-23T22:25:17.9563213Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9563355Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-23T22:25:17.9563414Z  133 โ”‚   );
2026-10-23T22:25:17.9563525Z  134 โ”‚   const listLocalBranchNames = vi.fn((_: string) =>
2026-10-23T22:25:17.9563628Z      ยท                                       โ”ฌ
2026-10-23T22:25:17.9563857Z      ยท                                       โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9563977Z  135 โ”‚     Effect.succeed(
2026-10-23T22:25:17.9564030Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9564138Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9564140Z
2026-10-23T22:25:17.9564327Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9564467Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-23T22:25:17.9564523Z  177 โ”‚   });
2026-10-23T22:25:17.9564628Z  178 โ”‚   const sendToThread = vi.fn((_: unknown) => {
2026-10-23T22:25:17.9564723Z      ยท                               โ”ฌ
2026-10-23T22:25:17.9564865Z      ยท                               โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9564975Z  179 โ”‚     switch (options.continuation ?? "queued") {
2026-10-23T22:25:17.9565035Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9565142Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9565144Z
2026-10-23T22:25:17.9565334Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9565473Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-23T22:25:17.9565531Z  202 โ”‚   );
2026-10-23T22:25:17.9565639Z  203 โ”‚   const removeWorktree = vi.fn((_: unknown) =>
2026-10-23T22:25:17.9565737Z      ยท                                 โ”ฌ
2026-10-23T22:25:17.9565877Z      ยท                                 โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9565965Z  204 โ”‚     options.removeWorktreeFails
2026-10-23T22:25:17.9566022Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9566194Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9566210Z
2026-10-23T22:25:17.9566456Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9566603Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-23T22:25:17.9566663Z  207 โ”‚   );
2026-10-23T22:25:17.9566772Z  208 โ”‚   const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-23T22:25:17.9566873Z      ยท                                    โ”ฌ
2026-10-23T22:25:17.9567022Z      ยท                                    โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9567114Z  209 โ”‚     options.deleteLocalBranchFails
2026-10-23T22:25:17.9567173Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9567276Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9567279Z
2026-10-23T22:25:17.9567473Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9567616Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-23T22:25:17.9567678Z  212 โ”‚   );
2026-10-23T22:25:17.9567793Z  213 โ”‚   const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-23T22:25:17.9567901Z      ยท                                          โ”ฌ
2026-10-23T22:25:17.9568049Z      ยท                                          โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9568141Z  214 โ”‚     options.fetchWorktreeBaseFails
2026-10-23T22:25:17.9568193Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9568301Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9568303Z
2026-10-23T22:25:17.9568492Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9568731Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-23T22:25:17.9568858Z  253 โ”‚   );
2026-10-23T22:25:17.9568951Z  254 โ”‚   const localStatus = vi.fn((_: unknown) =>
2026-10-23T22:25:17.9569049Z      ยท                              โ”ฌ
2026-10-23T22:25:17.9569191Z      ยท                              โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9569269Z  255 โ”‚     Effect.succeed({
2026-10-23T22:25:17.9569323Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9569429Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9569432Z
2026-10-23T22:25:17.9569624Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9569764Z      โ•ญโ”€[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-23T22:25:17.9569822Z  263 โ”‚   );
2026-10-23T22:25:17.9569986Z  264 โ”‚   const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-23T22:25:17.9570086Z      ยท                                โ”ฌ
2026-10-23T22:25:17.9570231Z      ยท                                โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9570381Z  265 โ”‚   const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-23T22:25:17.9570437Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9570544Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9570546Z
2026-10-23T22:25:17.9570820Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9570956Z       โ•ญโ”€[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-23T22:25:17.9571016Z  3404 โ”‚
2026-10-23T22:25:17.9571218Z  3405 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-23T22:25:17.9571300Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9571472Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-23T22:25:17.9571549Z  3406 โ”‚   Layer.effect(
2026-10-23T22:25:17.9571607Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9571719Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9571721Z
2026-10-23T22:25:17.9571893Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9572060Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:697:76]
2026-10-23T22:25:17.9572247Z  696 โ”‚   const [snoozeGateClock, setSnoozeGateClock] = useState(() => ({ thread, now: Date.now() }));
2026-10-23T22:25:17.9572423Z  697 โ”‚   if (snoozeGateClock.thread !== thread) setSnoozeGateClock({ thread, now: Date.now() });
2026-10-23T22:25:17.9572567Z      ยท                                                                            โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9572759Z      ยท                                                                                 โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9572901Z  698 โ”‚   const snoozeGateNow = new Date(snoozeGateClock.now).toISOString();
2026-10-23T22:25:17.9572956Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9573252Z   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-23T22:25:17.9573562Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9573565Z
2026-10-23T22:25:17.9573738Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9574000Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:718:71]
2026-10-23T22:25:17.9574129Z  717 โ”‚   const snoozePresets = useMemo(
2026-10-23T22:25:17.9574312Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-23T22:25:17.9574450Z      ยท                                                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9574638Z      ยท                                                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9574763Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-23T22:25:17.9574816Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9575106Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9575416Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9575421Z
2026-10-23T22:25:17.9575610Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9575775Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:719:6]
2026-10-23T22:25:17.9575954Z  718 โ”‚     () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-23T22:25:17.9576074Z  719 โ”‚     [props.snoozePresetMinute, swipeActions.secondary],
2026-10-23T22:25:17.9576174Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9576357Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.snoozePresetMinute`
2026-10-23T22:25:17.9576412Z  720 โ”‚   );
2026-10-23T22:25:17.9576477Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9576808Z   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-23T22:25:17.9577130Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9577132Z
2026-10-23T22:25:17.9577326Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-23T22:25:17.9577485Z      โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:765:7]
2026-10-23T22:25:17.9577562Z  764 โ”‚       thread.pinnedAt,
2026-10-23T22:25:17.9577631Z  765 โ”‚       variant,
2026-10-23T22:25:17.9577710Z      ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9577924Z      ยท          โ•ฐโ”€โ”€ Unnecessary dependency `variant`
2026-10-23T22:25:17.9578028Z  766 โ”‚     ],
2026-10-23T22:25:17.9578084Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9578408Z   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-23T22:25:17.9578726Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9578728Z
2026-10-23T22:25:17.9578931Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9579099Z       โ•ญโ”€[apps/mobile/src/features/threads/thread-list-v2-items.tsx:1215:21]
2026-10-23T22:25:17.9579242Z  1214 โ”‚             {providerDrivers.slice(0, -1).map((driver, index) => (
2026-10-23T22:25:17.9579386Z  1215 โ”‚               <View key={`${driver}:${index}`} className="-mr-1 opacity-30">
2026-10-23T22:25:17.9579511Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9579628Z  1216 โ”‚                 <ProviderIcon provider={driver} size={12} />
2026-10-23T22:25:17.9579684Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9579835Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9579841Z
2026-10-23T22:25:17.9579993Z   โš  react(refs): Cannot access refs during render
2026-10-23T22:25:17.9580151Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-23T22:25:17.9580342Z  151 โ”‚         <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-23T22:25:17.9580428Z  152 โ”‚           {props.children(open)}
2026-10-23T22:25:17.9580527Z      ยท                           โ”€โ”€โ”ฌโ”€
2026-10-23T22:25:17.9580697Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-23T22:25:17.9580766Z  153 โ”‚         </View>
2026-10-23T22:25:17.9580823Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9581307Z   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-23T22:25:17.9581660Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T22:25:17.9581663Z
2026-10-23T22:25:17.9581867Z   โš  react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-23T22:25:17.9582028Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-23T22:25:17.9582116Z  139 โ”‚       if (action.id !== undefined) {
2026-10-23T22:25:17.9582202Z  140 โ”‚         props.onPressAction?.({
2026-10-23T22:25:17.9582283Z      ยท         โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9582421Z      ยท           โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-23T22:25:17.9582518Z  141 โ”‚           nativeEvent: { event: action.id },
2026-10-23T22:25:17.9582671Z  142 โ”‚         } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-23T22:25:17.9582738Z  143 โ”‚       }
2026-10-23T22:25:17.9582799Z  144 โ”‚     },
2026-10-23T22:25:17.9582882Z  145 โ”‚     [close, props.onPressAction],
2026-10-23T22:25:17.9582985Z      ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9583439Z      ยท                      โ•ฐโ”€โ”€ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-23T22:25:17.9583578Z  146 โ”‚   );
2026-10-23T22:25:17.9583633Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9584130Z   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-23T22:25:17.9584458Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9584460Z
2026-10-23T22:25:17.9584612Z   โš  react(refs): Cannot access refs during render
2026-10-23T22:25:17.9584739Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:185:9]
2026-10-23T22:25:17.9584812Z  184 โ”‚         "options",
2026-10-23T22:25:17.9584918Z  185 โ”‚         latestOptionFunctionsRef.current,
2026-10-23T22:25:17.9585034Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9585238Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T22:25:17.9585338Z  186 โ”‚         optionFunctionWrappersRef.current,
2026-10-23T22:25:17.9585395Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9585878Z   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-23T22:25:17.9586187Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T22:25:17.9586192Z
2026-10-23T22:25:17.9586343Z   โš  react(refs): Cannot access refs during render
2026-10-23T22:25:17.9586464Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:186:9]
2026-10-23T22:25:17.9586564Z  185 โ”‚         latestOptionFunctionsRef.current,
2026-10-23T22:25:17.9586665Z  186 โ”‚         optionFunctionWrappersRef.current,
2026-10-23T22:25:17.9586782Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9586979Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-23T22:25:17.9587079Z  187 โ”‚       ) as NativeStackNavigationOptions)
2026-10-23T22:25:17.9587135Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9587628Z   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-23T22:25:17.9587929Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-23T22:25:17.9587936Z
2026-10-23T22:25:17.9588238Z   โš  eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9588372Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-23T22:25:17.9588429Z  217 โ”‚
2026-10-23T22:25:17.9588586Z  218 โ”‚ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-23T22:25:17.9588678Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9588917Z      ยท                 โ•ฐโ”€โ”€ 'revokeActiveMcpThread' is declared here
2026-10-23T22:25:17.9589164Z  219 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-23T22:25:17.9589224Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9589332Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9589335Z
2026-10-23T22:25:17.9589657Z   โš  eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9589790Z      โ•ญโ”€[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-23T22:25:17.9589848Z  220 โ”‚
2026-10-23T22:25:17.9589984Z  221 โ”‚ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-23T22:25:17.9590101Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9590620Z      ยท                     โ•ฐโ”€โ”€ 'revokeAllActiveMcpCredentials' is declared here
2026-10-23T22:25:17.9590806Z  222 โ”‚   activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-23T22:25:17.9590860Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9590975Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9590979Z
2026-10-23T22:25:17.9591151Z   โš  eslint(no-new): Do not use 'new' for side effects.
2026-10-23T22:25:17.9591287Z      โ•ญโ”€[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-23T22:25:17.9591448Z  167 โ”‚   // @ts-expect-error a declaration constructed directly
2026-10-23T22:25:17.9591555Z  168 โ”‚   new McpToolAccess.Declaration(unchecked);
2026-10-23T22:25:17.9591662Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9591802Z  169 โ”‚   // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-23T22:25:17.9591858Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9592034Z   help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-23T22:25:17.9592040Z
2026-10-23T22:25:17.9592358Z   โš  eslint(no-unused-vars): Variable 'claudeCaps' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9592549Z     โ•ญโ”€[packages/shared/src/model.test.ts:36:7]
2026-10-23T22:25:17.9592633Z  35 โ”‚
2026-10-23T22:25:17.9592835Z  36 โ”‚ const claudeCaps: ModelCapabilities = createModelCapabilities({
2026-10-23T22:25:17.9592955Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9593160Z     ยท            โ•ฐโ”€โ”€ 'claudeCaps' is declared here
2026-10-23T22:25:17.9593239Z  37 โ”‚   optionDescriptors: [
2026-10-23T22:25:17.9593293Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9593409Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9593426Z
2026-10-23T22:25:17.9593686Z   โš  unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-23T22:25:17.9593823Z      โ•ญโ”€[apps/server/src/vcs/GitVcsDriverCore.ts:509:11]
2026-10-23T22:25:17.9593928Z  508 โ”‚         GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-23T22:25:17.9594078Z  509 โ”‚         (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-23T22:25:17.9594175Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9594236Z  510 โ”‚     )
2026-10-23T22:25:17.9594290Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9594456Z   help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-23T22:25:17.9594458Z
2026-10-23T22:25:17.9595142Z   โš  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-23T22:25:17.9595339Z      โ•ญโ”€[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-23T22:25:17.9595420Z  138 โ”‚       Effect.gen(function* () {
2026-10-23T22:25:17.9595630Z  139 โ”‚ โ•ญโ”€โ–ถ     while (fiber.pollUnsafe() === undefined) {
2026-10-23T22:25:17.9595766Z  140 โ”‚ โ”‚         yield* TestClock.adjust("100 millis");
2026-10-23T22:25:17.9596109Z  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-23T22:25:17.9596311Z  142 โ”‚ โ”‚         yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-23T22:25:17.9596459Z  143 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-23T22:25:17.9596557Z  144 โ”‚         return yield* Fiber.join(fiber);
2026-10-23T22:25:17.9596616Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9596619Z
2026-10-23T22:25:17.9596997Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-23T22:25:17.9597141Z       โ•ญโ”€[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
2026-10-23T22:25:17.9597286Z  1785 โ”‚           const stat = branch.files!.find((file) => file.path === path)!;
2026-10-23T22:25:17.9597443Z  1786 โ”‚           const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-23T22:25:17.9597567Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9597635Z  1787 โ”‚             cwd,
2026-10-23T22:25:17.9597701Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9597706Z
2026-10-23T22:25:17.9597905Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-23T22:25:17.9598020Z      โ•ญโ”€[packages/shared/src/qrCode.ts:458:44]
2026-10-23T22:25:17.9598090Z  457 โ”‚   ): Array<byte> {
2026-10-23T22:25:17.9598207Z  458 โ”‚     let result: Array<byte> = divisor.map((_) => 0);
2026-10-23T22:25:17.9598317Z      ยท                                            โ”ฌ
2026-10-23T22:25:17.9598472Z      ยท                                            โ•ฐโ”€โ”€ '_' is declared here
2026-10-23T22:25:17.9598547Z  459 โ”‚     for (const b of data) {
2026-10-23T22:25:17.9598604Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9598715Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9598718Z
2026-10-23T22:25:17.9599014Z   โš  eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-23T22:25:17.9599194Z     โ•ญโ”€[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-23T22:25:17.9599251Z  78 โ”‚
2026-10-23T22:25:17.9599396Z  79 โ”‚ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-23T22:25:17.9599492Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9599647Z     ยท                  โ•ฐโ”€โ”€ 'describeSchedule' is declared here
2026-10-23T22:25:17.9599763Z  80 โ”‚   if (schedule.type === "webhook") return "On webhook";
2026-10-23T22:25:17.9599820Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9599933Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9599936Z
2026-10-23T22:25:17.9600238Z   โš  eslint(no-unused-vars): Variable 'legacyCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9600406Z     โ•ญโ”€[packages/provider-cursor/src/server/credentialStore.test.ts:15:7]
2026-10-23T22:25:17.9600465Z  14 โ”‚
2026-10-23T22:25:17.9600546Z  15 โ”‚ const legacyCredentials = {
2026-10-23T22:25:17.9600638Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9600791Z     ยท               โ•ฐโ”€โ”€ 'legacyCredentials' is declared here
2026-10-23T22:25:17.9600866Z  16 โ”‚   version: 1 as const,
2026-10-23T22:25:17.9600926Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9601038Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9601040Z
2026-10-23T22:25:17.9601263Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T22:25:17.9601461Z     โ•ญโ”€[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-23T22:25:17.9601549Z  89 โ”‚   let cursor = prompt.length;
2026-10-23T22:25:17.9601667Z  90 โ”‚   for (const occurrence of occurrences.reverse()) {
2026-10-23T22:25:17.9601775Z     ยท                                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9601863Z  91 โ”‚     let { start, end } = occurrence;
2026-10-23T22:25:17.9601921Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9602202Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T22:25:17.9602204Z
2026-10-23T22:25:17.9602401Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-23T22:25:17.9602538Z      โ•ญโ”€[packages/client-runtime/src/state/shell.ts:189:5]
2026-10-23T22:25:17.9602658Z  186 โ”‚     let waiting = yield* Ref.get(awaitingCompletion);
2026-10-23T22:25:17.9602735Z  187 โ”‚     let next = initial;
2026-10-23T22:25:17.9602817Z      ยท         โ”€โ”€โ”ฌโ”€
2026-10-23T22:25:17.9602952Z      ยท           โ•ฐโ”€โ”€ From this accumulator
2026-10-23T22:25:17.9603040Z  188 โ”‚     let receivedSnapshot = false;
2026-10-23T22:25:17.9603125Z  189 โ”‚     for (const item of items) {
2026-10-23T22:25:17.9603197Z      ยท     โ”€โ”ฌโ”€
2026-10-23T22:25:17.9603312Z      ยท      โ•ฐโ”€โ”€ For this loop
2026-10-23T22:25:17.9603409Z  190 โ”‚       if (item.kind === "synchronized") {
2026-10-23T22:25:17.9603485Z  191 โ”‚         waiting = false;
2026-10-23T22:25:17.9603582Z  192 โ”‚         if (Option.isSome(next.snapshot)) {
2026-10-23T22:25:17.9603714Z  193 โ”‚           next = { ...next, status: "live", error: Option.none() };
2026-10-23T22:25:17.9603813Z      ยท                    โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9604033Z      ยท                       โ•ฐโ”€โ”€ From this spread
2026-10-23T22:25:17.9604156Z  194 โ”‚         }
2026-10-23T22:25:17.9604213Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9604381Z   help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-23T22:25:17.9604551Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-23T22:25:17.9604554Z
2026-10-23T22:25:17.9605049Z   โš  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-23T22:25:17.9605244Z      โ•ญโ”€[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-23T22:25:17.9605325Z  520 โ”‚                 })).delivery;
2026-10-23T22:25:17.9605537Z  521 โ”‚ โ•ญโ”€โ–ถ             while (delivery.outcome === "accepted") {
2026-10-23T22:25:17.9605663Z  522 โ”‚ โ”‚                 yield* Effect.yieldNow;
2026-10-23T22:25:17.9605816Z  523 โ”‚ โ”‚                 delivery = (yield* service.getWebhookDelivery({
2026-10-23T22:25:17.9605926Z  524 โ”‚ โ”‚                   id: task.id,
2026-10-23T22:25:17.9606060Z  525 โ”‚ โ”‚                   deliveryId: deliveryId!,
2026-10-23T22:25:17.9606228Z  526 โ”‚ โ”‚                 })).delivery;
2026-10-23T22:25:17.9606378Z  527 โ”‚ โ•ฐโ”€โ–ถ             }
2026-10-23T22:25:17.9606504Z  528 โ”‚                 assert.equal(delivery.outcome, "dispatch_failed");
2026-10-23T22:25:17.9606566Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9606568Z
2026-10-23T22:25:17.9606793Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T22:25:17.9606933Z    โ•ญโ”€[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-23T22:25:17.9607016Z  2 โ”‚   AuthFilesystemReadScope,
2026-10-23T22:25:17.9607093Z  3 โ”‚   type AuthSessionState,
2026-10-23T22:25:17.9607186Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9607340Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-23T22:25:17.9607422Z  4 โ”‚   type FilesystemBrowseEntry,
2026-10-23T22:25:17.9607479Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9607587Z   help: Consider removing this import.
2026-10-23T22:25:17.9607589Z
2026-10-23T22:25:17.9607881Z   โš  eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-23T22:25:17.9608027Z      โ•ญโ”€[packages/provider-cursor/src/server/auth.ts:249:20]
2026-10-23T22:25:17.9608096Z  248 โ”‚     },
2026-10-23T22:25:17.9608187Z  249 โ”‚     (effect, flow, stopSessions) =>
2026-10-23T22:25:17.9608284Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9608445Z      ยท                          โ•ฐโ”€โ”€ 'stopSessions' is declared here
2026-10-23T22:25:17.9608518Z  250 โ”‚       effect.pipe(
2026-10-23T22:25:17.9608574Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9608683Z   help: Consider removing this parameter.
2026-10-23T22:25:17.9608686Z
2026-10-23T22:25:17.9608907Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-23T22:25:17.9609086Z     โ•ญโ”€[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-23T22:25:17.9609167Z  14 โ”‚ } from "@t3tools/contracts";
2026-10-23T22:25:17.9609347Z  15 โ”‚ import type {} from "@t3tools/contracts";
2026-10-23T22:25:17.9609480Z     ยท             โ”€โ”€
2026-10-23T22:25:17.9609672Z  16 โ”‚ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-23T22:25:17.9609730Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9609817Z   help: Remove empty braces
2026-10-23T22:25:17.9609820Z
2026-10-23T22:25:17.9610014Z   โš  unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-23T22:25:17.9610150Z      โ•ญโ”€[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-23T22:25:17.9610286Z  193 โ”‚     const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-23T22:25:17.9610382Z  194 โ”‚     const codes = new Array<number>(count);
2026-10-23T22:25:17.9610505Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9610626Z  195 โ”‚     for (let index = 0; index < count; index += 1) {
2026-10-23T22:25:17.9610687Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9611130Z   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-23T22:25:17.9611135Z
2026-10-23T22:25:17.9611394Z   โš  eslint(no-unused-vars): Function 'nonEmptyString' is declared but never used.
2026-10-23T22:25:17.9611568Z      โ•ญโ”€[packages/client-runtime/src/work-log/presentation.ts:234:10]
2026-10-23T22:25:17.9611626Z  233 โ”‚
2026-10-23T22:25:17.9611752Z  234 โ”‚ function nonEmptyString(value: unknown): string | null {
2026-10-23T22:25:17.9611842Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9612005Z      ยท                 โ•ฐโ”€โ”€ 'nonEmptyString' is declared here
2026-10-23T22:25:17.9612161Z  235 โ”‚   return typeof value === "string" && value.trim().length > 0 ? value : null;
2026-10-23T22:25:17.9612218Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9612328Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9612330Z
2026-10-23T22:25:17.9612571Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T22:25:17.9612709Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:138:28]
2026-10-23T22:25:17.9612802Z  137 โ”‚   visit(parser.parse(markdown));
2026-10-23T22:25:17.9612894Z  138 โ”‚   for (const edit of edits.reverse())
2026-10-23T22:25:17.9613005Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9613185Z  139 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-23T22:25:17.9613246Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9613527Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T22:25:17.9613532Z
2026-10-23T22:25:17.9613759Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T22:25:17.9613893Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:169:28]
2026-10-23T22:25:17.9613984Z  168 โ”‚   visit(parser.parse(markdown));
2026-10-23T22:25:17.9614074Z  169 โ”‚   for (const edit of edits.reverse())
2026-10-23T22:25:17.9614178Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9614352Z  170 โ”‚     markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-23T22:25:17.9614411Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9614757Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T22:25:17.9614803Z
2026-10-23T22:25:17.9615022Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-23T22:25:17.9615155Z      โ•ญโ”€[apps/mobile/src/lib/markdownDocument.ts:223:38]
2026-10-23T22:25:17.9615246Z  222 โ”‚   visit(parser.parse(markdown));
2026-10-23T22:25:17.9615360Z  223 โ”‚   for (const lineStart of lineStarts.reverse()) {
2026-10-23T22:25:17.9615469Z      ยท                                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9615647Z  224 โ”‚     // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-23T22:25:17.9615707Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9615980Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-23T22:25:17.9615988Z
2026-10-23T22:25:17.9616202Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T22:25:17.9616347Z    โ•ญโ”€[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-23T22:25:17.9616436Z  2 โ”‚   AuthDiagnosticsReadScope,
2026-10-23T22:25:17.9616520Z  3 โ”‚   type AuthSessionState,
2026-10-23T22:25:17.9616611Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9616772Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-23T22:25:17.9616855Z  4 โ”‚   sessionGrantsScope,
2026-10-23T22:25:17.9616917Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9617024Z   help: Consider removing this import.
2026-10-23T22:25:17.9617026Z
2026-10-23T22:25:17.9617209Z   โš  eslint(no-empty-pattern): Empty array binding pattern
2026-10-23T22:25:17.9617388Z       โ•ญโ”€[apps/server/src/pullRequest/PullRequestService.test.ts:1429:12]
2026-10-23T22:25:17.9617452Z  1428 โ”‚
2026-10-23T22:25:17.9617525Z  1429 โ”‚ for (const [] of [
2026-10-23T22:25:17.9617612Z       ยท            โ”€โ”€
2026-10-23T22:25:17.9617692Z  1430 โ”‚   ["github", "github.com"],
2026-10-23T22:25:17.9617754Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9618049Z   help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-23T22:25:17.9618052Z
2026-10-23T22:25:17.9618235Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9618367Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-23T22:25:17.9618483Z  820 โ”‚     const resolved = resolveThreadTarget(target);
2026-10-23T22:25:17.9618655Z  821 โ”‚     if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-23T22:25:17.9618792Z      ยท                                                        โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9618981Z      ยท                                                             โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9619074Z  822 โ”‚       return AsyncResult.failure(
2026-10-23T22:25:17.9619129Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9619428Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9619750Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9619752Z
2026-10-23T22:25:17.9620017Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9620191Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-23T22:25:17.9620266Z  708 โ”‚     const wokeAt = resolved
2026-10-23T22:25:17.9620419Z  709 โ”‚       ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-23T22:25:17.9620542Z      ยท                                              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9620718Z      ยท                                                   โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9620784Z  710 โ”‚       : null;
2026-10-23T22:25:17.9620841Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9621143Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9621501Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9621507Z
2026-10-23T22:25:17.9622001Z   โš  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-23T22:25:17.9622167Z      โ•ญโ”€[packages/client-runtime/src/connection/supervisor.test.ts:135:3]
2026-10-23T22:25:17.9622293Z  134 โ”‚       let lastState = yield* SubscriptionRef.get(state);
2026-10-23T22:25:17.9622521Z  135 โ”‚ โ•ญโ”€โ–ถ   for (let iteration = 0; iteration < 100; iteration += 1) {
2026-10-23T22:25:17.9622677Z  136 โ”‚ โ”‚       lastState = yield* SubscriptionRef.get(state);
2026-10-23T22:25:17.9622799Z  137 โ”‚ โ”‚       if (predicate(lastState)) {
2026-10-23T22:25:17.9622910Z  138 โ”‚ โ”‚         return lastState;
2026-10-23T22:25:17.9622994Z  139 โ”‚ โ”‚       }
2026-10-23T22:25:17.9623107Z  140 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T22:25:17.9623242Z  141 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T22:25:17.9623328Z  142 โ”‚       return yield* Effect.die(
2026-10-23T22:25:17.9623388Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9623390Z
2026-10-23T22:25:17.9623617Z   โš  typescript(no-extraneous-class): Unexpected class with only a constructor.
2026-10-23T22:25:17.9623748Z      โ•ญโ”€[apps/desktop/src/preview/Manager.test.ts:158:18]
2026-10-23T22:25:17.9623864Z  157 โ”‚       BrowserWindow: browserWindowConstructor,
2026-10-23T22:25:17.9624043Z  158 โ”‚ โ•ญโ”€โ–ถ   ClipboardItem: class {
2026-10-23T22:25:17.9624184Z  159 โ”‚ โ”‚       constructor(data: Record<string, unknown>) {
2026-10-23T22:25:17.9624311Z  160 โ”‚ โ”‚         clipboardItemConstructor(data);
2026-10-23T22:25:17.9624391Z  161 โ”‚ โ”‚       }
2026-10-23T22:25:17.9624532Z  162 โ”‚ โ•ฐโ”€โ–ถ   },
2026-10-23T22:25:17.9624610Z  163 โ”‚       clipboard: {
2026-10-23T22:25:17.9624666Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9624854Z   help: Try replacing this class with a standalone function or deleting it entirely
2026-10-23T22:25:17.9624857Z
2026-10-23T22:25:17.9625446Z   โš  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-23T22:25:17.9625644Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:226:3]
2026-10-23T22:25:17.9625710Z  225 โ”‚     ) {
2026-10-23T22:25:17.9625921Z  226 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T22:25:17.9626051Z  227 โ”‚ โ”‚       const socket = sockets[index];
2026-10-23T22:25:17.9626150Z  228 โ”‚ โ”‚       if (socket) {
2026-10-23T22:25:17.9626256Z  229 โ”‚ โ”‚         return socket;
2026-10-23T22:25:17.9626334Z  230 โ”‚ โ”‚       }
2026-10-23T22:25:17.9626444Z  231 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T22:25:17.9626584Z  232 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T22:25:17.9626780Z  233 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to create a websocket."));
2026-10-23T22:25:17.9626842Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9626844Z
2026-10-23T22:25:17.9627338Z   โš  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-23T22:25:17.9627487Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:240:3]
2026-10-23T22:25:17.9627550Z  239 โ”‚     ) {
2026-10-23T22:25:17.9627827Z  240 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T22:25:17.9628159Z  241 โ”‚ โ”‚       const request = socket.sent.map((message) => decodeJson(message)).filter(isRpcRequest)[index];
2026-10-23T22:25:17.9628312Z  242 โ”‚ โ”‚       if (request) {
2026-10-23T22:25:17.9628469Z  243 โ”‚ โ”‚         return request;
2026-10-23T22:25:17.9628587Z  244 โ”‚ โ”‚       }
2026-10-23T22:25:17.9628745Z  245 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-23T22:25:17.9628959Z  246 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-23T22:25:17.9629248Z  247 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to send a request."));
2026-10-23T22:25:17.9629340Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9629343Z
2026-10-23T22:25:17.9630042Z   โš  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-23T22:25:17.9630628Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:131:9]
2026-10-23T22:25:17.9630782Z  130 โ”‚           ) {
2026-10-23T22:25:17.9631014Z  131 โ”‚ โ•ญโ”€โ–ถ         for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T22:25:17.9631154Z  132 โ”‚ โ”‚             if (subscriptions.length >= count) {
2026-10-23T22:25:17.9631253Z  133 โ”‚ โ”‚               return;
2026-10-23T22:25:17.9631380Z  134 โ”‚ โ”‚             }
2026-10-23T22:25:17.9631504Z  135 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-23T22:25:17.9631658Z  136 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-23T22:25:17.9631835Z  137 โ”‚             return yield* Effect.die(new Error(`Expected ${count} durable subscriptions.`));
2026-10-23T22:25:17.9631901Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9631904Z
2026-10-23T22:25:17.9632401Z   โš  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-23T22:25:17.9632552Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:252:7]
2026-10-23T22:25:17.9632723Z  251 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(firstClient)));
2026-10-23T22:25:17.9632995Z  252 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 1; attempt += 1) {
2026-10-23T22:25:17.9633112Z  253 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9633256Z  254 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9633393Z  255 โ”‚           yield* SubscriptionRef.set(activeSession, Option.none());
2026-10-23T22:25:17.9633458Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9633460Z
2026-10-23T22:25:17.9633949Z   โš  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-23T22:25:17.9634095Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-23T22:25:17.9634160Z  257 โ”‚
2026-10-23T22:25:17.9634422Z  258 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-23T22:25:17.9634540Z  259 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9634685Z  260 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9634815Z  261 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-23T22:25:17.9634872Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9634874Z
2026-10-23T22:25:17.9635362Z   โš  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-23T22:25:17.9635505Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-23T22:25:17.9635574Z  321 โ”‚           );
2026-10-23T22:25:17.9635847Z  322 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-23T22:25:17.9635955Z  323 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9636178Z  324 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9636279Z  325 โ”‚
2026-10-23T22:25:17.9636338Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9636341Z
2026-10-23T22:25:17.9636821Z   โš  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-23T22:25:17.9636963Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-23T22:25:17.9637142Z  329 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-23T22:25:17.9637409Z  330 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-23T22:25:17.9637525Z  331 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9637665Z  332 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9637788Z  333 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-23T22:25:17.9637847Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9637850Z
2026-10-23T22:25:17.9638141Z   โš  unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-23T22:25:17.9638296Z     โ•ญโ”€[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-23T22:25:17.9638472Z  11 โ”‚       addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-23T22:25:17.9638563Z  12 โ”‚         this.onmessage = listener;
2026-10-23T22:25:17.9638664Z     ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9638724Z  13 โ”‚       }
2026-10-23T22:25:17.9638785Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9639140Z   help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-23T22:25:17.9639146Z
2026-10-23T22:25:17.9639373Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-23T22:25:17.9639524Z     โ•ญโ”€[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-23T22:25:17.9639604Z  15 โ”‚       constructor() {
2026-10-23T22:25:17.9639683Z  16 โ”‚         source = this;
2026-10-23T22:25:17.9639767Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9639826Z  17 โ”‚       }
2026-10-23T22:25:17.9639887Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9640185Z   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-23T22:25:17.9640188Z
2026-10-23T22:25:17.9640413Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-23T22:25:17.9640549Z     โ•ญโ”€[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-23T22:25:17.9640624Z  37 โ”‚   get isConnected() {
2026-10-23T22:25:17.9640731Z  38 โ”‚     let current: FakeElement | null = this;
2026-10-23T22:25:17.9640817Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9640895Z  39 โ”‚     while (current?.parent) {
2026-10-23T22:25:17.9640954Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9641248Z   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-23T22:25:17.9641251Z
2026-10-23T22:25:17.9641495Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-23T22:25:17.9641753Z    โ•ญโ”€[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-23T22:25:17.9641871Z  3 โ”‚   AuthProvidersManageScope,
2026-10-23T22:25:17.9641952Z  4 โ”‚   type AuthSessionState,
2026-10-23T22:25:17.9642046Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9642200Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-23T22:25:17.9642277Z  5 โ”‚   type EnvironmentId,
2026-10-23T22:25:17.9642341Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9642450Z   help: Consider removing this import.
2026-10-23T22:25:17.9642453Z
2026-10-23T22:25:17.9642664Z   โš  eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-23T22:25:17.9642812Z    โ•ญโ”€[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-23T22:25:17.9642885Z  1 โ”‚ import type {
2026-10-23T22:25:17.9642959Z  2 โ”‚   EnvironmentId,
2026-10-23T22:25:17.9643045Z    ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9643198Z    ยท         โ•ฐโ”€โ”€ 'EnvironmentId' is imported here
2026-10-23T22:25:17.9643298Z  3 โ”‚   ExecutionEnvironmentCapabilities,
2026-10-23T22:25:17.9643360Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9643465Z   help: Consider removing this import.
2026-10-23T22:25:17.9643471Z
2026-10-23T22:25:17.9643768Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T22:25:17.9643935Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-23T22:25:17.9643998Z  162 โ”‚   keys,
2026-10-23T22:25:17.9644081Z  163 โ”‚   overridingProjects = [],
2026-10-23T22:25:17.9644171Z      ยท                        โ”€โ”€
2026-10-23T22:25:17.9644258Z  164 โ”‚   onClearOverrides,
2026-10-23T22:25:17.9644321Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9644658Z   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-23T22:25:17.9644663Z
2026-10-23T22:25:17.9645158Z   โš  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-23T22:25:17.9645326Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-23T22:25:17.9645402Z  168 โ”‚           });
2026-10-23T22:25:17.9645618Z  169 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-23T22:25:17.9645824Z  170 โ”‚ โ”‚           if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-23T22:25:17.9645942Z  171 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9646098Z  172 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9646192Z  173 โ”‚
2026-10-23T22:25:17.9646290Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9646295Z
2026-10-23T22:25:17.9646824Z   โš  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-23T22:25:17.9646992Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-23T22:25:17.9647116Z  177 โ”‚           yield* Deferred.succeed(releaseSave, undefined);
2026-10-23T22:25:17.9647423Z  178 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-23T22:25:17.9647610Z  179 โ”‚ โ”‚           if ((yield* Ref.get(saved)).length > 0) break;
2026-10-23T22:25:17.9647727Z  180 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9647872Z  181 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9647937Z  182 โ”‚
2026-10-23T22:25:17.9647991Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9647993Z
2026-10-23T22:25:17.9648484Z   โš  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-23T22:25:17.9648643Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-23T22:25:17.9648792Z  306 โ”‚           yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-23T22:25:17.9649003Z  307 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-23T22:25:17.9649133Z  308 โ”‚ โ”‚           const values = yield* Ref.get(saved);
2026-10-23T22:25:17.9649351Z  309 โ”‚ โ”‚           if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-23T22:25:17.9649450Z  310 โ”‚ โ”‚             break;
2026-10-23T22:25:17.9649542Z  311 โ”‚ โ”‚           }
2026-10-23T22:25:17.9649653Z  312 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9649795Z  313 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9649859Z  314 โ”‚
2026-10-23T22:25:17.9649924Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9649930Z
2026-10-23T22:25:17.9650413Z   โš  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-23T22:25:17.9650584Z       โ•ญโ”€[packages/client-runtime/src/state/threads-sync.test.ts:1228:7]
2026-10-23T22:25:17.9650692Z  1227 โ”‚           yield* harness.replaceSession;
2026-10-23T22:25:17.9650919Z  1228 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T22:25:17.9651080Z  1229 โ”‚ โ”‚           if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-23T22:25:17.9651179Z  1230 โ”‚ โ”‚             break;
2026-10-23T22:25:17.9651283Z  1231 โ”‚ โ”‚           }
2026-10-23T22:25:17.9651461Z  1232 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9651607Z  1233 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9651698Z  1234 โ”‚           yield* Queue.offer(
2026-10-23T22:25:17.9651758Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9651761Z
2026-10-23T22:25:17.9652248Z   โš  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-23T22:25:17.9652414Z       โ•ญโ”€[packages/client-runtime/src/state/threads-sync.test.ts:1337:7]
2026-10-23T22:25:17.9652510Z  1336 โ”‚           yield* harness.replaceSession;
2026-10-23T22:25:17.9652849Z  1337 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-23T22:25:17.9653064Z  1338 โ”‚ โ”‚           if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-23T22:25:17.9653179Z  1339 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-23T22:25:17.9653319Z  1340 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-23T22:25:17.9653465Z  1341 โ”‚           expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-23T22:25:17.9653523Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9653526Z
2026-10-23T22:25:17.9653734Z   โš  eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-23T22:25:17.9653873Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-23T22:25:17.9654002Z  3 โ”‚ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-23T22:25:17.9654097Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-23T22:25:17.9654188Z    ยท             โ”€โ”ฌโ”€
2026-10-23T22:25:17.9654320Z    ยท              โ•ฐโ”€โ”€ 'Arr' is imported here
2026-10-23T22:25:17.9654412Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-23T22:25:17.9654470Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9654585Z   help: Consider removing this import.
2026-10-23T22:25:17.9654588Z
2026-10-23T22:25:17.9654795Z   โš  eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-23T22:25:17.9654942Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-23T22:25:17.9655035Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-23T22:25:17.9655126Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-23T22:25:17.9655204Z    ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-23T22:25:17.9655355Z    ยท               โ•ฐโ”€โ”€ 'Order' is imported here
2026-10-23T22:25:17.9655416Z  6 โ”‚
2026-10-23T22:25:17.9655478Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9655584Z   help: Consider removing this import.
2026-10-23T22:25:17.9655587Z
2026-10-23T22:25:17.9655840Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-23T22:25:17.9655991Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-23T22:25:17.9656126Z  984 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-23T22:25:17.9656384Z  985 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-23T22:25:17.9656513Z  986 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-23T22:25:17.9656666Z  987 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-23T22:25:17.9656818Z  988 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-23T22:25:17.9656877Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9656960Z   help: Switch to `Set`
2026-10-23T22:25:17.9656962Z
2026-10-23T22:25:17.9657148Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9657311Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-23T22:25:17.9657435Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-23T22:25:17.9657604Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-23T22:25:17.9657745Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9658005Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9658111Z  179 โ”‚   }
2026-10-23T22:25:17.9658165Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9658468Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9658789Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9658792Z
2026-10-23T22:25:17.9659042Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-23T22:25:17.9663032Z      โ•ญโ”€[apps/web/src/components/pullRequest/pullRequestList.logic.ts:187:9]
2026-10-23T22:25:17.9663152Z  186 โ”‚ ): boolean {
2026-10-23T22:25:17.9663335Z  187 โ”‚   const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-23T22:25:17.9663521Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9663680Z  188 โ”‚   const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-23T22:25:17.9663735Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9663823Z   help: Switch to `Set`
2026-10-23T22:25:17.9663826Z
2026-10-23T22:25:17.9664013Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9664164Z      โ•ญโ”€[apps/web/src/components/CustomSnoozeDialog.tsx:140:58]
2026-10-23T22:25:17.9664305Z  139 โ”‚                             {...(weekStartsOn === undefined ? {} : { weekStartsOn })}
2026-10-23T22:25:17.9664465Z  140 โ”‚                             disabled={{ before: new Date(new Date().setHours(0, 0, 0, 0)) }}
2026-10-23T22:25:17.9664604Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9664794Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9664899Z  141 โ”‚                             onSelect={(selected) => {
2026-10-23T22:25:17.9664957Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9665259Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9665583Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9665587Z
2026-10-23T22:25:17.9665921Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9666294Z     โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:88:15]
2026-10-23T22:25:17.9666367Z  87 โ”‚             <li
2026-10-23T22:25:17.9666470Z  88 โ”‚               key={`${index}:${check.name}`}
2026-10-23T22:25:17.9666592Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9666752Z  89 โ”‚               className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-23T22:25:17.9666813Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9666972Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9666975Z
2026-10-23T22:25:17.9667195Z   โš  eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-23T22:25:17.9667332Z     โ•ญโ”€[apps/web/src/types.ts:22:3]
2026-10-23T22:25:17.9667456Z  21 โ”‚   EnvironmentThreadShell,
2026-10-23T22:25:17.9667555Z  22 โ”‚   ThreadRunSummary,
2026-10-23T22:25:17.9667646Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9667797Z     ยท           โ•ฐโ”€โ”€ 'ThreadRunSummary' is imported here
2026-10-23T22:25:17.9667879Z  23 โ”‚   ThreadRuntimeSummary,
2026-10-23T22:25:17.9667935Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9668048Z   help: Consider removing this import.
2026-10-23T22:25:17.9668051Z
2026-10-23T22:25:17.9668309Z   โš  eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-23T22:25:17.9668437Z     โ•ญโ”€[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-23T22:25:17.9668500Z  55 โ”‚
2026-10-23T22:25:17.9668615Z  56 โ”‚ function normalizeTerminalContextSelection(
2026-10-23T22:25:17.9668735Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9668949Z     ยท                          โ•ฐโ”€โ”€ 'normalizeTerminalContextSelection' is declared here
2026-10-23T22:25:17.9669052Z  57 โ”‚   selection: TerminalContextSelection,
2026-10-23T22:25:17.9669118Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9669232Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9669235Z
2026-10-23T22:25:17.9669525Z   โš  eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-23T22:25:17.9669686Z     โ•ญโ”€[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-23T22:25:17.9669750Z  60 โ”‚ ) {
2026-10-23T22:25:17.9669930Z  61 โ”‚   const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-23T22:25:17.9670022Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9670561Z     ยท               โ•ฐโ”€โ”€ 'useDragRegion' is declared here
2026-10-23T22:25:17.9670732Z  62 โ”‚   const isInline = props.mode === "inline";
2026-10-23T22:25:17.9670815Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9670947Z   help: Consider removing this declaration.
2026-10-23T22:25:17.9670951Z
2026-10-23T22:25:17.9671169Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-23T22:25:17.9671402Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:814:17]
2026-10-23T22:25:17.9671497Z  813 โ”‚               <div
2026-10-23T22:25:17.9671621Z  814 โ”‚                 key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-23T22:25:17.9671774Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9672192Z  815 โ”‚                 className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-23T22:25:17.9672322Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9672478Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-23T22:25:17.9672482Z
2026-10-23T22:25:17.9672781Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T22:25:17.9672959Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:387:19]
2026-10-23T22:25:17.9673029Z  386 โ”‚   onFilters,
2026-10-23T22:25:17.9673101Z  387 โ”‚   authorOptions = [],
2026-10-23T22:25:17.9673188Z      ยท                   โ”€โ”€
2026-10-23T22:25:17.9673266Z  388 โ”‚   labelOptions = [],
2026-10-23T22:25:17.9673326Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9673667Z   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-23T22:25:17.9673673Z
2026-10-23T22:25:17.9673968Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-23T22:25:17.9674143Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:388:18]
2026-10-23T22:25:17.9674221Z  387 โ”‚   authorOptions = [],
2026-10-23T22:25:17.9674291Z  388 โ”‚   labelOptions = [],
2026-10-23T22:25:17.9674374Z      ยท                  โ”€โ”€
2026-10-23T22:25:17.9674439Z  389 โ”‚   host,
2026-10-23T22:25:17.9674499Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9674823Z   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-23T22:25:17.9674832Z
2026-10-23T22:25:17.9675012Z   โš  react(purity): Cannot call impure function during render
2026-10-23T22:25:17.9675156Z       โ•ญโ”€[apps/web/src/components/CommandPalette.tsx:1996:20]
2026-10-23T22:25:17.9675290Z  1995 โ”‚         title: inferProjectTitleFromPath(destinationPath),
2026-10-23T22:25:17.9675398Z  1996 โ”‚         createdAt: new Date().toISOString(),
2026-10-23T22:25:17.9675493Z       ยท                    โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9675645Z       ยท                         โ•ฐโ”€โ”€ Cannot call impure function
2026-10-23T22:25:17.9675761Z  1997 โ”‚         remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-23T22:25:17.9675820Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9676111Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-23T22:25:17.9676429Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-23T22:25:17.9676433Z
2026-10-23T22:25:17.9676706Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9676872Z     โ•ญโ”€[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-23T22:25:17.9677044Z  28 โ”‚   const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-23T22:25:17.9677120Z  29 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9677200Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9677340Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9677470Z  30 โ”‚     if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-23T22:25:17.9677663Z     ยท                                        โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-23T22:25:17.9677903Z     ยท                                           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9677986Z  31 โ”‚   }, [key, live, snapshot]);
2026-10-23T22:25:17.9678039Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9678672Z   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-23T22:25:17.9679016Z   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-23T22:25:17.9679018Z
2026-10-23T22:25:17.9679290Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9679461Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-23T22:25:17.9679581Z  37 โ”‚   const [initialized, setInitialized] = useState(false);
2026-10-23T22:25:17.9679654Z  38 โ”‚   useLayoutEffect(() => {
2026-10-23T22:25:17.9679741Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9679880Z     ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9679946Z  39 โ”‚     reset();
2026-10-23T22:25:17.9680019Z  40 โ”‚     setInitialized(true);
2026-10-23T22:25:17.9680106Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9680282Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9680356Z  41 โ”‚   }, [reset]);
2026-10-23T22:25:17.9680421Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9681043Z   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-23T22:25:17.9681407Z   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-23T22:25:17.9681410Z
2026-10-23T22:25:17.9681681Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9681845Z     โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-23T22:25:17.9681906Z  88 โ”‚
2026-10-23T22:25:17.9681980Z  89 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9682058Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9682191Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9682360Z  90 โ”‚     if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-23T22:25:17.9682473Z  91 โ”‚     const branchName = initialProjectRef.branch;
2026-10-23T22:25:17.9682547Z  92 โ”‚     let active = true;
2026-10-23T22:25:17.9682649Z  93 โ”‚     setPendingCheckouts((count) => count + 1);
2026-10-23T22:25:17.9682739Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9682915Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9683076Z  94 โ”‚     // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-23T22:25:17.9683196Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9683849Z   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-23T22:25:17.9684182Z   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-23T22:25:17.9684184Z
2026-10-23T22:25:17.9684451Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9684612Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-23T22:25:17.9684666Z  55 โ”‚
2026-10-23T22:25:17.9684743Z  56 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9684822Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9684958Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9685028Z  57 โ”‚     setDecodedSize(null);
2026-10-23T22:25:17.9685114Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9685291Z     ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9685366Z  58 โ”‚   }, [props.sourceKey]);
2026-10-23T22:25:17.9685417Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9686040Z   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-23T22:25:17.9686375Z   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-23T22:25:17.9686378Z
2026-10-23T22:25:17.9686642Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-23T22:25:17.9686800Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-23T22:25:17.9686854Z  59 โ”‚
2026-10-23T22:25:17.9686930Z  60 โ”‚   useEffect(() => {
2026-10-23T22:25:17.9687009Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9687143Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-23T22:25:17.9687215Z  61 โ”‚     setFailedUri(null);
2026-10-23T22:25:17.9687296Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9687546Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-23T22:25:17.9687656Z  62 โ”‚   }, [props.uri]);
2026-10-23T22:25:17.9687708Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9688325Z   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-23T22:25:17.9688657Z   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-23T22:25:17.9688659Z
2026-10-23T22:25:17.9688892Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-23T22:25:17.9689057Z    โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-23T22:25:17.9689185Z  6 โ”‚ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-23T22:25:17.9689373Z  7 โ”‚ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-23T22:25:17.9689471Z    ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9689635Z    ยท                  โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-23T22:25:17.9689689Z  8 โ”‚
2026-10-23T22:25:17.9689749Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9689858Z   help: Consider removing this import.
2026-10-23T22:25:17.9689861Z
2026-10-23T22:25:17.9690074Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9690236Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-23T22:25:17.9690318Z  57 โ”‚     setDecodedSize(null);
2026-10-23T22:25:17.9690398Z  58 โ”‚   }, [props.sourceKey]);
2026-10-23T22:25:17.9690491Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9690649Z     ยท              โ•ฐโ”€โ”€ Unnecessary dependency `props.sourceKey`
2026-10-23T22:25:17.9690713Z  59 โ”‚
2026-10-23T22:25:17.9690771Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9691084Z   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-23T22:25:17.9691463Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9691471Z
2026-10-23T22:25:17.9691693Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-23T22:25:17.9691858Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-23T22:25:17.9691937Z  61 โ”‚     setFailedUri(null);
2026-10-23T22:25:17.9692011Z  62 โ”‚   }, [props.uri]);
2026-10-23T22:25:17.9692092Z     ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9692243Z     ยท           โ•ฐโ”€โ”€ Unnecessary dependency `props.uri`
2026-10-23T22:25:17.9692301Z  63 โ”‚
2026-10-23T22:25:17.9692358Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-23T22:25:17.9692666Z   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-23T22:25:17.9693080Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-23T22:25:17.9693130Z
2026-10-23T22:25:17.9693227Z Found 0 errors and 362 warnings in 5400 files (7.3s, 8 threads)
2026-10-23T22:25:18.0289242Z Post job cleanup.
2026-10-23T22:25:18.1022304Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-23T22:25:18.1128927Z Post job cleanup.
2026-10-23T22:25:18.1146227Z ##[start-action display=Cache full pnpm store;id=__ea13b644-27d8-4b8b-ac24-d2c4c3d9c038.__actions_cache]
2026-10-23T22:25:18.1522894Z Post job cleanup.
2026-10-23T22:25:18.2225627Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-23T22:25:18.2265314Z ##[end-action id=__ea13b644-27d8-4b8b-ac24-d2c4c3d9c038.__actions_cache;outcome=success;conclusion=success;duration_ms=111]
2026-10-23T22:25:18.2267096Z ##[start-action display=Cache Vite+;id=__ea13b644-27d8-4b8b-ac24-d2c4c3d9c038.vp_cache]
2026-10-23T22:25:18.2288929Z Post job cleanup.
2026-10-23T22:25:18.2967783Z 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-23T22:25:18.3009969Z ##[end-action id=__ea13b644-27d8-4b8b-ac24-d2c4c3d9c038.vp_cache;outcome=success;conclusion=success;duration_ms=74]
2026-10-23T22:25:18.3061753Z Post job cleanup.
2026-10-23T22:25:18.3616846Z [command]/usr/local/bin/git version
2026-10-23T22:25:18.3658309Z git version 2.55.0
2026-10-23T22:25:18.3690098Z Temporarily overriding HOME='/home/runner/_work/_temp/f4361a75-7622-4eba-b727-4703105f8d63' before making global git config changes
2026-10-23T22:25:18.3690537Z Adding repository directory to the temporary git global config as a safe directory
2026-10-23T22:25:18.3695833Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-23T22:25:18.3733216Z Removing SSH command configuration
2026-10-23T22:25:18.3738391Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-23T22:25:18.3774905Z [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-23T22:25:18.3911583Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-23T22:25:18.3940567Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-23T22:25:18.3991027Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-23T22:25:18.4016545Z ##[group]Run '/job_completed.sh'
2026-10-23T22:25:18.4028797Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-23T22:25:18.4029104Z env:
2026-10-23T22:25:18.4029305Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 193
2026-10-23T22:25:18.4029574Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 447
2026-10-23T22:25:18.4029839Z   BLACKSMITH_CHECK_RUN_ID: 120686836548
2026-10-23T22:25:18.4030094Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-23T22:25:18.4030477Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-23T22:25:18.4030730Z ##[endgroup]
2026-10-23T22:25:18.4132219Z Docker container cache not activated, skipping hash computation.
2026-10-23T22:25:18.4416533Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-23T22:25:18.4471579Z Cleaning up orphan processes