GitHub check

256 KB of 603 KB loaded Download the full log (603 KB)
347 KB of earlier output not loaded
op-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-24T22:14:10.6083919Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-24T22:14:10.6083972Z  257 โ”‚
2026-10-24T22:14:10.6084217Z  258 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T22:14:10.6084325Z  259 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T22:14:10.6084455Z  260 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T22:14:10.6084585Z  261 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T22:14:10.6084633Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6084636Z
2026-10-24T22:14:10.6085087Z   โš  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-24T22:14:10.6085216Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-24T22:14:10.6085276Z  321 โ”‚           );
2026-10-24T22:14:10.6085533Z  322 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-24T22:14:10.6085634Z  323 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T22:14:10.6085762Z  324 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T22:14:10.6085815Z  325 โ”‚
2026-10-24T22:14:10.6085865Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6085868Z
2026-10-24T22:14:10.6086313Z   โš  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-24T22:14:10.6086439Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-24T22:14:10.6086597Z  329 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-24T22:14:10.6086885Z  330 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T22:14:10.6087011Z  331 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T22:14:10.6087136Z  332 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T22:14:10.6087237Z  333 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T22:14:10.6087287Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6087289Z
2026-10-24T22:14:10.6087739Z   โš  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-24T22:14:10.6087890Z     โ•ญโ”€[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-24T22:14:10.6087943Z  27 โ”‚     ) {
2026-10-24T22:14:10.6088144Z  28 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T22:14:10.6088291Z  29 โ”‚ โ”‚       const available = yield* service.peek(workspaceRoot);
2026-10-24T22:14:10.6088412Z  30 โ”‚ โ”‚       if (predicate(available)) return available;
2026-10-24T22:14:10.6088507Z  31 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-24T22:14:10.6088627Z  32 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-24T22:14:10.6088804Z  33 โ”‚       return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-24T22:14:10.6088854Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6088856Z
2026-10-24T22:14:10.6089077Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T22:14:10.6089222Z      โ•ญโ”€[packages/client-runtime/src/operations/projects.ts:238:51]
2026-10-24T22:14:10.6089284Z  237 โ”‚ ): string {
2026-10-24T22:14:10.6089434Z  238 โ”‚   const folderName = workspaceRoot.split(/[\\/]/).filter(Boolean).at(-1) ?? "";
2026-10-24T22:14:10.6089542Z      ยท                                                   โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6089669Z  239 โ”‚   return target.owner ? `${target.owner}/${folderName}` : folderName;
2026-10-24T22:14:10.6089718Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6089886Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T22:14:10.6089889Z
2026-10-24T22:14:10.6090142Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6090304Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:217:7]
2026-10-24T22:14:10.6090362Z  213 โ”‚   };
2026-10-24T22:14:10.6090431Z  214 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6090500Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6090628Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6090798Z  215 โ”‚     const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-24T22:14:10.6090862Z  216 โ”‚     if (inserted) {
2026-10-24T22:14:10.6090935Z  217 โ”‚       setSelection((current) =>
2026-10-24T22:14:10.6091010Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6091177Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6091343Z  218 โ”‚         current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-24T22:14:10.6091390Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6092040Z   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-24T22:14:10.6092384Z   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-24T22:14:10.6092386Z
2026-10-24T22:14:10.6092638Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6092798Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:298:7]
2026-10-24T22:14:10.6092871Z  286 โ”‚   }, [hasWorkspaceSnapshot]);
2026-10-24T22:14:10.6092934Z  287 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6093007Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6093134Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6093276Z  288 โ”‚     if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-24T22:14:10.6093422Z  289 โ”‚     const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-24T22:14:10.6093493Z  290 โ”‚     const now = Date.now();
2026-10-24T22:14:10.6093603Z  291 โ”‚     const lastRequest = workspaceRefreshKeyRef.current;
2026-10-24T22:14:10.6093657Z  292 โ”‚     if (
2026-10-24T22:14:10.6093732Z  293 โ”‚       lastRequest?.key === key &&
2026-10-24T22:14:10.6093871Z  294 โ”‚       now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-24T22:14:10.6093924Z  295 โ”‚     )
2026-10-24T22:14:10.6093982Z  296 โ”‚       return;
2026-10-24T22:14:10.6094161Z  297 โ”‚     if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-24T22:14:10.6094247Z  298 โ”‚       setWorkspaceRefreshRetry(null);
2026-10-24T22:14:10.6094340Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6094513Z      ยท                   โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6094593Z  299 โ”‚       return;
2026-10-24T22:14:10.6094642Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6095226Z   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-24T22:14:10.6095592Z   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-24T22:14:10.6095625Z
2026-10-24T22:14:10.6095821Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6095981Z      โ•ญโ”€[apps/mobile/src/features/threads/use-composer-command-menu.ts:328:5]
2026-10-24T22:14:10.6096034Z  327 โ”‚   }, [
2026-10-24T22:14:10.6096095Z  328 โ”‚     draftMessage,
2026-10-24T22:14:10.6096169Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6096311Z      ยท           โ•ฐโ”€โ”€ Unnecessary dependency `draftMessage`
2026-10-24T22:14:10.6096374Z  329 โ”‚     environmentId,
2026-10-24T22:14:10.6096421Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6096710Z   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-24T22:14:10.6097022Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6097027Z
2026-10-24T22:14:10.6097483Z   โš  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-24T22:14:10.6097613Z     โ•ญโ”€[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-24T22:14:10.6097665Z  93 โ”‚     ) {
2026-10-24T22:14:10.6097863Z  94 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T22:14:10.6098037Z  95 โ”‚ โ”‚       const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-24T22:14:10.6098157Z  96 โ”‚ โ”‚       if (predicate(project)) return project;
2026-10-24T22:14:10.6098255Z  97 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-24T22:14:10.6098374Z  98 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-24T22:14:10.6098521Z  99 โ”‚       return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-24T22:14:10.6098570Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6098573Z
2026-10-24T22:14:10.6099032Z   โš  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-24T22:14:10.6099206Z      โ•ญโ”€[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-24T22:14:10.6099282Z  222 โ”‚         let idlePasses = 0;
2026-10-24T22:14:10.6099426Z  223 โ”‚ โ•ญโ”€โ–ถ     for (;;) {
2026-10-24T22:14:10.6099559Z  224 โ”‚ โ”‚         yield* Effect.promise(() => Promise.resolve());
2026-10-24T22:14:10.6099699Z  225 โ”‚ โ”‚         const pending = backgroundRuntime.pending.shift();
2026-10-24T22:14:10.6099793Z  226 โ”‚ โ”‚         if (!pending) {
2026-10-24T22:14:10.6099883Z  227 โ”‚ โ”‚           idlePasses++;
2026-10-24T22:14:10.6099984Z  228 โ”‚ โ”‚           if (idlePasses >= 3) {
2026-10-24T22:14:10.6100067Z  229 โ”‚ โ”‚             return;
2026-10-24T22:14:10.6100142Z  230 โ”‚ โ”‚           }
2026-10-24T22:14:10.6100225Z  231 โ”‚ โ”‚           continue;
2026-10-24T22:14:10.6100299Z  232 โ”‚ โ”‚         }
2026-10-24T22:14:10.6100441Z  233 โ”‚ โ”‚         idlePasses = 0;
2026-10-24T22:14:10.6100588Z  234 โ”‚ โ”‚         const exit = yield* Effect.exit(
2026-10-24T22:14:10.6100796Z  235 โ”‚ โ”‚           pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-24T22:14:10.6100870Z  236 โ”‚ โ”‚         );
2026-10-24T22:14:10.6100973Z  237 โ”‚ โ”‚         yield* Effect.sync(() => {
2026-10-24T22:14:10.6101075Z  238 โ”‚ โ”‚           pending.resolve(exit);
2026-10-24T22:14:10.6101148Z  239 โ”‚ โ”‚         });
2026-10-24T22:14:10.6101275Z  240 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-24T22:14:10.6101329Z  241 โ”‚       },
2026-10-24T22:14:10.6101379Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6101382Z
2026-10-24T22:14:10.6101842Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T22:14:10.6101967Z      โ•ญโ”€[packages/effect-acp/src/protocol.test.ts:500:31]
2026-10-24T22:14:10.6102018Z  499 โ”‚
2026-10-24T22:14:10.6102127Z  500 โ”‚       const response = yield* Schema.decodeUnknownEffect(
2026-10-24T22:14:10.6102244Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6102347Z  501 โ”‚         Schema.fromJsonString(JsonRpcErrorResponse),
2026-10-24T22:14:10.6102396Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6102398Z
2026-10-24T22:14:10.6102766Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T22:14:10.6102942Z       โ•ญโ”€[packages/effect-acp/src/client.ts:1269:11]
2026-10-24T22:14:10.6103099Z  1268 โ”‚         extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
2026-10-24T22:14:10.6103267Z  1269 โ”‚           Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
2026-10-24T22:14:10.6103368Z       ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6103512Z  1270 โ”‚             Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
2026-10-24T22:14:10.6103563Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6103566Z
2026-10-24T22:14:10.6104017Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T22:14:10.6104141Z      โ•ญโ”€[packages/effect-acp/src/errors.test.ts:129:28]
2026-10-24T22:14:10.6104232Z  128 โ”‚       const secret = "acp-summary-secret";
2026-10-24T22:14:10.6104338Z  129 โ”‚       const cause = yield* Schema.decodeUnknownEffect(
2026-10-24T22:14:10.6104452Z      ยท                            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6104517Z  130 โ”‚         Schema.Struct({
2026-10-24T22:14:10.6104595Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6104598Z
2026-10-24T22:14:10.6104926Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T22:14:10.6105040Z     โ•ญโ”€[packages/effect-acp/src/schema.test.ts:18:12]
2026-10-24T22:14:10.6105200Z  17 โ”‚     const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
2026-10-24T22:14:10.6105388Z  18 โ”‚     expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
2026-10-24T22:14:10.6105504Z     ยท            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6105562Z  19 โ”‚     expect(
2026-10-24T22:14:10.6105611Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6105613Z
2026-10-24T22:14:10.6105936Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T22:14:10.6106052Z     โ•ญโ”€[packages/effect-acp/src/schema.test.ts:20:7]
2026-10-24T22:14:10.6106110Z  19 โ”‚     expect(
2026-10-24T22:14:10.6106274Z  20 โ”‚       Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
2026-10-24T22:14:10.6106345Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6106406Z  21 โ”‚     ).toBe(true);
2026-10-24T22:14:10.6106457Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6106460Z
2026-10-24T22:14:10.6106645Z   โš  unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-24T22:14:10.6106764Z      โ•ญโ”€[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-24T22:14:10.6106887Z  193 โ”‚     const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-24T22:14:10.6106977Z  194 โ”‚     const codes = new Array<number>(count);
2026-10-24T22:14:10.6107083Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6107182Z  195 โ”‚     for (let index = 0; index < count; index += 1) {
2026-10-24T22:14:10.6107233Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6107650Z   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-24T22:14:10.6107653Z
2026-10-24T22:14:10.6107852Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T22:14:10.6108000Z     โ•ญโ”€[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T22:14:10.6108085Z  35 โ”‚       <T3SourceTextRunNativeComponent
2026-10-24T22:14:10.6108151Z  36 โ”‚         key={index}
2026-10-24T22:14:10.6108232Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6108306Z  37 โ”‚         style={flattenedStyle}
2026-10-24T22:14:10.6108356Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6108504Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T22:14:10.6108506Z
2026-10-24T22:14:10.6108730Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T22:14:10.6108852Z      โ•ญโ”€[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-24T22:14:10.6108913Z  730 โ”‚       );
2026-10-24T22:14:10.6109088Z  731 โ”‚       const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-24T22:14:10.6109185Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6109299Z  732 โ”‚       expect(snapshot?.history).toBe("aa๐Ÿ˜€\rEND");
2026-10-24T22:14:10.6109349Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6109517Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T22:14:10.6109520Z
2026-10-24T22:14:10.6109723Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T22:14:10.6109890Z    โ•ญโ”€[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T22:14:10.6109962Z  3 โ”‚   AuthProvidersManageScope,
2026-10-24T22:14:10.6110033Z  4 โ”‚   type AuthSessionState,
2026-10-24T22:14:10.6110174Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6110353Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-24T22:14:10.6110418Z  5 โ”‚   type EnvironmentId,
2026-10-24T22:14:10.6110471Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6110571Z   help: Consider removing this import.
2026-10-24T22:14:10.6110573Z
2026-10-24T22:14:10.6110765Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T22:14:10.6110930Z      โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:818:17]
2026-10-24T22:14:10.6110995Z  817 โ”‚               <div
2026-10-24T22:14:10.6111108Z  818 โ”‚                 key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-24T22:14:10.6111248Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6111415Z  819 โ”‚                 className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-24T22:14:10.6111498Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6111738Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T22:14:10.6111741Z
2026-10-24T22:14:10.6112013Z   โš  eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-24T22:14:10.6112139Z     โ•ญโ”€[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-24T22:14:10.6112227Z  55 โ”‚
2026-10-24T22:14:10.6112358Z  56 โ”‚ function normalizeTerminalContextSelection(
2026-10-24T22:14:10.6112508Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6112710Z     ยท                          โ•ฐโ”€โ”€ 'normalizeTerminalContextSelection' is declared here
2026-10-24T22:14:10.6112834Z  57 โ”‚   selection: TerminalContextSelection,
2026-10-24T22:14:10.6112912Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6113062Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6113065Z
2026-10-24T22:14:10.6113258Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T22:14:10.6113455Z      โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-24T22:14:10.6113565Z  554 โ”‚           assert.deepStrictEqual(
2026-10-24T22:14:10.6113754Z  555 โ”‚             (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T22:14:10.6113908Z      ยท                                                                      โ”ฌ
2026-10-24T22:14:10.6114079Z      ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T22:14:10.6114177Z  556 โ”‚             [
2026-10-24T22:14:10.6114251Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6114408Z   help: Consider removing this parameter.
2026-10-24T22:14:10.6114411Z
2026-10-24T22:14:10.6114631Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T22:14:10.6114833Z       โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-24T22:14:10.6114942Z  1154 โ”‚           assert.deepStrictEqual(
2026-10-24T22:14:10.6115134Z  1155 โ”‚             (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T22:14:10.6115272Z       ยท                                                                      โ”ฌ
2026-10-24T22:14:10.6115464Z       ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T22:14:10.6115617Z  1156 โ”‚             [
2026-10-24T22:14:10.6115718Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6115838Z   help: Consider removing this parameter.
2026-10-24T22:14:10.6115866Z
2026-10-24T22:14:10.6116064Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T22:14:10.6116255Z     โ•ญโ”€[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:88:15]
2026-10-24T22:14:10.6116339Z  87 โ”‚             <li
2026-10-24T22:14:10.6116456Z  88 โ”‚               key={`${index}:${check.name}`}
2026-10-24T22:14:10.6116589Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6116758Z  89 โ”‚               className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-24T22:14:10.6116831Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6116993Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T22:14:10.6117002Z
2026-10-24T22:14:10.6117190Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6117371Z      โ•ญโ”€[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-24T22:14:10.6117507Z  177 โ”‚   if (snoozeClockState.shell !== activeThreadShell) {
2026-10-24T22:14:10.6117694Z  178 โ”‚     setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-24T22:14:10.6117818Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6118033Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6118114Z  179 โ”‚   }
2026-10-24T22:14:10.6118189Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6118487Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6118808Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6118811Z
2026-10-24T22:14:10.6119094Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6119249Z      โ•ญโ”€[apps/mobile/src/components/ProjectFavicon.tsx:172:5]
2026-10-24T22:14:10.6119462Z  167 โ”‚   const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T22:14:10.6119570Z  168 โ”‚   useLayoutEffect(() => {
2026-10-24T22:14:10.6119663Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6119817Z      ยท          โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6119983Z  169 โ”‚     if (faviconRequest === null) return;
2026-10-24T22:14:10.6120079Z  170 โ”‚
2026-10-24T22:14:10.6120244Z  171 โ”‚     const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T22:14:10.6120373Z  172 โ”‚     setActiveFaviconRequest(faviconRequest);
2026-10-24T22:14:10.6120490Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6120691Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6120763Z  173 โ”‚     return endRequest;
2026-10-24T22:14:10.6120869Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6121493Z   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-24T22:14:10.6121836Z   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-24T22:14:10.6121839Z
2026-10-24T22:14:10.6122023Z   โš  eslint(no-control-regex): Unexpected control character
2026-10-24T22:14:10.6122237Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-24T22:14:10.6122405Z  219 โ”‚               <Text selectable className="font-mono text-sm text-foreground">
2026-10-24T22:14:10.6122567Z  220 โ”‚                 {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-24T22:14:10.6122698Z      ยท                                              โ”€โ”€โ”ฌโ”€
2026-10-24T22:14:10.6122870Z      ยท                                                โ•ฐโ”€โ”€ 'U+001B' is a control character.
2026-10-24T22:14:10.6122980Z  221 โ”‚               </Text>
2026-10-24T22:14:10.6123059Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6123309Z   help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-24T22:14:10.6123311Z
2026-10-24T22:14:10.6123502Z   โš  eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-24T22:14:10.6123665Z     โ•ญโ”€[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-24T22:14:10.6123787Z  14 โ”‚ import * as Layer from "effect/Layer";
2026-10-24T22:14:10.6123904Z  15 โ”‚ import type * as Scope from "effect/Scope";
2026-10-24T22:14:10.6123993Z     ยท                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6124143Z     ยท                    โ•ฐโ”€โ”€ 'Scope' is imported here
2026-10-24T22:14:10.6124286Z  16 โ”‚ import * as Stream from "effect/Stream";
2026-10-24T22:14:10.6124365Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6124489Z   help: Consider removing this import.
2026-10-24T22:14:10.6124491Z
2026-10-24T22:14:10.6124784Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6124946Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T22:14:10.6125033Z  57 โ”‚
2026-10-24T22:14:10.6125123Z  58 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6125206Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6125351Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6125487Z  59 โ”‚     const controller = new AbortController();
2026-10-24T22:14:10.6125585Z  60 โ”‚     setLoadState("pending");
2026-10-24T22:14:10.6125724Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6125948Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6126130Z  61 โ”‚     // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T22:14:10.6126210Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6126802Z   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-24T22:14:10.6127146Z   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-24T22:14:10.6127148Z
2026-10-24T22:14:10.6127367Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6127546Z     โ•ญโ”€[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T22:14:10.6127649Z  70 โ”‚     return () => controller.abort();
2026-10-24T22:14:10.6127753Z  71 โ”‚   }, [player, props.playRequested, attempt]);
2026-10-24T22:14:10.6127950Z     ยท       โ”€โ”€โ”€โ”ฌโ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6128212Z     ยท          โ”‚             โ”‚              โ•ฐโ”€โ”€ Unnecessary dependency `attempt`
2026-10-24T22:14:10.6128439Z     ยท          โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `props.playRequested`
2026-10-24T22:14:10.6128612Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `player_0`
2026-10-24T22:14:10.6128679Z  72 โ”‚
2026-10-24T22:14:10.6128753Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6129090Z   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-24T22:14:10.6129424Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6129426Z
2026-10-24T22:14:10.6129636Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6129791Z     โ•ญโ”€[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T22:14:10.6129873Z  81 โ”‚     },
2026-10-24T22:14:10.6129967Z  82 โ”‚     [draftKey],
2026-10-24T22:14:10.6130053Z     ยท      โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6130218Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `draftKey`
2026-10-24T22:14:10.6130293Z  83 โ”‚   );
2026-10-24T22:14:10.6130386Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6130680Z   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-24T22:14:10.6131012Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6131015Z
2026-10-24T22:14:10.6131293Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T22:14:10.6131484Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:410:7]
2026-10-24T22:14:10.6131574Z  409 โ”‚
2026-10-24T22:14:10.6131759Z  410 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-24T22:14:10.6131885Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6132028Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T22:14:10.6132130Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6132243Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6132245Z
2026-10-24T22:14:10.6132463Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T22:14:10.6132633Z      โ•ญโ”€[apps/mobile/src/components/ComposerContextSheet.tsx:272:25]
2026-10-24T22:14:10.6132772Z  271 โ”‚                 {record.elements?.map((element, index) => (
2026-10-24T22:14:10.6132967Z  272 โ”‚                   <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T22:14:10.6133134Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6133236Z  273 โ”‚                     <ContextField
2026-10-24T22:14:10.6133309Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6133496Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T22:14:10.6133500Z
2026-10-24T22:14:10.6133693Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T22:14:10.6133833Z    โ•ญโ”€[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T22:14:10.6133919Z  7 โ”‚     () =>
2026-10-24T22:14:10.6134016Z  8 โ”‚       Gesture.Hover()
2026-10-24T22:14:10.6134110Z    ยท               โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6134268Z    ยท                 โ•ฐโ”€โ”€ `Hover` may be a component
2026-10-24T22:14:10.6134368Z  9 โ”‚         .manualActivation(true)
2026-10-24T22:14:10.6134448Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6134783Z   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-24T22:14:10.6135253Z   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-24T22:14:10.6135255Z
2026-10-24T22:14:10.6135445Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T22:14:10.6135621Z      โ•ญโ”€[apps/server/src/provider/Drivers/CodexDriver.test.ts:466:14]
2026-10-24T22:14:10.6135703Z  465 โ”‚
2026-10-24T22:14:10.6135824Z  466 โ”‚   for (const {} of ["direct", "wrapper"] as const) {
2026-10-24T22:14:10.6135923Z      ยท              โ”€โ”€
2026-10-24T22:14:10.6136007Z  467 โ”‚   }
2026-10-24T22:14:10.6136077Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6136324Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T22:14:10.6136327Z
2026-10-24T22:14:10.6136628Z   โš  eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-24T22:14:10.6136801Z     โ•ญโ”€[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-24T22:14:10.6136878Z  60 โ”‚ ) {
2026-10-24T22:14:10.6137046Z  61 โ”‚   const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-24T22:14:10.6137169Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6137332Z     ยท               โ•ฐโ”€โ”€ 'useDragRegion' is declared here
2026-10-24T22:14:10.6137505Z  62 โ”‚   const isInline = props.mode === "inline";
2026-10-24T22:14:10.6137603Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6137736Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6137739Z
2026-10-24T22:14:10.6137967Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T22:14:10.6138147Z     โ•ญโ”€[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-24T22:14:10.6138240Z  71 โ”‚             <Pressable
2026-10-24T22:14:10.6138310Z  72 โ”‚               key={index}
2026-10-24T22:14:10.6138441Z     ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6138553Z  73 โ”‚               accessibilityRole="button"
2026-10-24T22:14:10.6138630Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6138784Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T22:14:10.6138787Z
2026-10-24T22:14:10.6139077Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6139273Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T22:14:10.6139367Z  259 โ”‚     .join("|");
2026-10-24T22:14:10.6139443Z  260 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6139534Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6139717Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6139805Z  261 โ”‚     stop();
2026-10-24T22:14:10.6139884Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-24T22:14:10.6140076Z      ยท       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6140174Z  262 โ”‚   }, [orderVersion]);
2026-10-24T22:14:10.6140257Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6140865Z   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-24T22:14:10.6141212Z   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-24T22:14:10.6141215Z
2026-10-24T22:14:10.6141452Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6141653Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T22:14:10.6141741Z  260 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6141812Z  261 โ”‚     stop();
2026-10-24T22:14:10.6141911Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-24T22:14:10.6142069Z      ยท       โ•ฐโ”€โ”€ Missing dependency `stop`
2026-10-24T22:14:10.6142167Z  262 โ”‚   }, [orderVersion]);
2026-10-24T22:14:10.6142255Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6142427Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `orderVersion`
2026-10-24T22:14:10.6142511Z  263 โ”‚   useEffect(
2026-10-24T22:14:10.6142611Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6143147Z   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-24T22:14:10.6143557Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6143601Z
2026-10-24T22:14:10.6143774Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6143962Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T22:14:10.6144080Z  95 โ”‚   const latest = useRef(props);
2026-10-24T22:14:10.6144165Z  96 โ”‚   latest.current = props;
2026-10-24T22:14:10.6144294Z     ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6144489Z     ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T22:14:10.6144682Z     ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-24T22:14:10.6144766Z  97 โ”‚   const gesture = useMemo(
2026-10-24T22:14:10.6144845Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6145340Z   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-24T22:14:10.6145661Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6145664Z
2026-10-24T22:14:10.6145842Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6146011Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T22:14:10.6146103Z  103 โ”‚         .runOnJS(true)
2026-10-24T22:14:10.6146223Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T22:14:10.6146383Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6146597Z      ยท                                 โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6146757Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6146831Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6147321Z   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-24T22:14:10.6147645Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6147648Z
2026-10-24T22:14:10.6147801Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6148034Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T22:14:10.6148184Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T22:14:10.6148363Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6148534Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6148754Z      ยท                                             โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6148911Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6148991Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6149487Z   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-24T22:14:10.6149788Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6149806Z
2026-10-24T22:14:10.6149961Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6150138Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T22:14:10.6150311Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6150460Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6150611Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6150856Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6151011Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T22:14:10.6151097Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6151566Z   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-24T22:14:10.6151886Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6151888Z
2026-10-24T22:14:10.6152050Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6152246Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T22:14:10.6152402Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6152540Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T22:14:10.6152707Z      ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6152941Z      ยท                                            โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6153043Z  108 โ”‚     [props.disabled],
2026-10-24T22:14:10.6153125Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6153590Z   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-24T22:14:10.6157644Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6157677Z
2026-10-24T22:14:10.6157846Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6158006Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T22:14:10.6158118Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-24T22:14:10.6158221Z  249 โ”‚   latest.current = { rows, planners, moveThread };
2026-10-24T22:14:10.6158324Z      ยท   โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6158502Z      ยท      โ”‚      โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T22:14:10.6158614Z      ยท      โ•ฐโ”€โ”€ This value is a ref
2026-10-24T22:14:10.6158665Z  250 โ”‚
2026-10-24T22:14:10.6158719Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6159173Z   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-24T22:14:10.6159458Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6159461Z
2026-10-24T22:14:10.6159603Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6159758Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T22:14:10.6159873Z  246 โ”‚   const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T22:14:10.6159988Z  247 โ”‚   const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T22:14:10.6160112Z      ยท                      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6160276Z      ยท                                        โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T22:14:10.6160382Z  248 โ”‚   const latest = useRef({ rows, planners, moveThread });
2026-10-24T22:14:10.6160430Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6160884Z   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-24T22:14:10.6161168Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6161170Z
2026-10-24T22:14:10.6161343Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6161501Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T22:14:10.6161564Z  323 โ”‚     update(0);
2026-10-24T22:14:10.6161643Z  324 โ”‚     let last = performance.now();
2026-10-24T22:14:10.6161737Z      ยท                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6161872Z      ยท                        โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6161939Z  325 โ”‚     const tick = () => {
2026-10-24T22:14:10.6161989Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6162282Z   help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6162618Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6162657Z
2026-10-24T22:14:10.6162840Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-24T22:14:10.6162996Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T22:14:10.6163055Z   98 โ”‚     () =>
2026-10-24T22:14:10.6163120Z   99 โ”‚       Gesture.Pan()
2026-10-24T22:14:10.6163191Z      ยท               โ”€โ”ฌโ”€
2026-10-24T22:14:10.6163319Z      ยท                โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-24T22:14:10.6163397Z  100 โ”‚         .enabled(!props.disabled)
2026-10-24T22:14:10.6163445Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6163716Z   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-24T22:14:10.6164152Z   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-24T22:14:10.6164154Z
2026-10-24T22:14:10.6164337Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T22:14:10.6164496Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T22:14:10.6164595Z  103 โ”‚         .runOnJS(true)
2026-10-24T22:14:10.6164693Z  104 โ”‚         .onStart(() => latest.current.onStart())
2026-10-24T22:14:10.6164779Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6165206Z      ยท                           โ•ฐโ”€โ”€ Missing dependency `latest`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6165337Z  105 โ”‚         .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6165455Z  106 โ”‚         .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T22:14:10.6165577Z  107 โ”‚         .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T22:14:10.6165642Z  108 โ”‚     [props.disabled],
2026-10-24T22:14:10.6165722Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6165903Z      ยท             โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6165959Z  109 โ”‚   );
2026-10-24T22:14:10.6166008Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6166215Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T22:14:10.6166522Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6166524Z
2026-10-24T22:14:10.6166978Z   โš  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-24T22:14:10.6167099Z      โ•ญโ”€[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-24T22:14:10.6167173Z  138 โ”‚       Effect.gen(function* () {
2026-10-24T22:14:10.6167360Z  139 โ”‚ โ•ญโ”€โ–ถ     while (fiber.pollUnsafe() === undefined) {
2026-10-24T22:14:10.6167479Z  140 โ”‚ โ”‚         yield* TestClock.adjust("100 millis");
2026-10-24T22:14:10.6167836Z  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-24T22:14:10.6168047Z  142 โ”‚ โ”‚         yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-24T22:14:10.6168173Z  143 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-24T22:14:10.6168255Z  144 โ”‚         return yield* Fiber.join(fiber);
2026-10-24T22:14:10.6168305Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6168308Z
2026-10-24T22:14:10.6168560Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6168716Z      โ•ญโ”€[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-24T22:14:10.6168883Z  112 โ”‚   const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-24T22:14:10.6168948Z  113 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6169019Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6169146Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6169304Z  114 โ”‚     if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-24T22:14:10.6169364Z  115 โ”‚       return;
2026-10-24T22:14:10.6169417Z  116 โ”‚     }
2026-10-24T22:14:10.6169531Z  117 โ”‚     setEntry({ key: input.targetKey, location: candidate });
2026-10-24T22:14:10.6169599Z      ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6169763Z      ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6169881Z  118 โ”‚   }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-24T22:14:10.6169938Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6170520Z   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-24T22:14:10.6170827Z   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-24T22:14:10.6170829Z
2026-10-24T22:14:10.6171079Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6171226Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:570:5]
2026-10-24T22:14:10.6171327Z  568 โ”‚   }, []);
2026-10-24T22:14:10.6171414Z  569 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6171482Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6171605Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6171688Z  570 โ”‚     setKeyboardStateSuspect(false);
2026-10-24T22:14:10.6171774Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6171939Z      ยท                โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6172038Z  571 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T22:14:10.6172088Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6172666Z   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-24T22:14:10.6172973Z   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-24T22:14:10.6172976Z
2026-10-24T22:14:10.6173222Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6173369Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:966:7]
2026-10-24T22:14:10.6173518Z  963 โ”‚   const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
2026-10-24T22:14:10.6173578Z  964 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6173645Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6173774Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6173931Z  965 โ”‚     if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
2026-10-24T22:14:10.6174041Z  966 โ”‚       setLastKnownKeyboardHeight(liveKeyboardHeight);
2026-10-24T22:14:10.6174137Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6174306Z      ยท                    โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6174358Z  967 โ”‚     }
2026-10-24T22:14:10.6174405Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6175022Z   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-24T22:14:10.6175336Z   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-24T22:14:10.6175341Z
2026-10-24T22:14:10.6175589Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6175740Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1222:5]
2026-10-24T22:14:10.6175792Z  1220 โ”‚
2026-10-24T22:14:10.6175855Z  1221 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6175925Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6176051Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6176125Z  1222 โ”‚     setAnchorMessageId(null);
2026-10-24T22:14:10.6176207Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6176424Z       ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6176532Z  1223 โ”‚     setSubmittedMessageId(null);
2026-10-24T22:14:10.6176580Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6177158Z   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-24T22:14:10.6177468Z   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-24T22:14:10.6177470Z
2026-10-24T22:14:10.6177666Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6177816Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:571:7]
2026-10-24T22:14:10.6177899Z  570 โ”‚     setKeyboardStateSuspect(false);
2026-10-24T22:14:10.6177995Z  571 โ”‚   }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T22:14:10.6178136Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6178342Z      ยท               โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `liveKeyboardHeight`
2026-10-24T22:14:10.6178497Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `isKeyboardVisible`
2026-10-24T22:14:10.6178619Z  572 โ”‚   const handleOwnedInputFocusChange = (focused: boolean) => {
2026-10-24T22:14:10.6178669Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6178961Z   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-24T22:14:10.6179267Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6179270Z
2026-10-24T22:14:10.6179461Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6179612Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1170:7]
2026-10-24T22:14:10.6179695Z  1169 โ”‚     userInputInsetProgress.set(1);
2026-10-24T22:14:10.6179853Z  1170 โ”‚   }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
2026-10-24T22:14:10.6179943Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6180116Z       ยท                   โ•ฐโ”€โ”€ Unnecessary dependency `activeUserInputRequestId`
2026-10-24T22:14:10.6180225Z  1171 โ”‚   const showContent = props.showContent ?? true;
2026-10-24T22:14:10.6180278Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6180561Z   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-24T22:14:10.6180864Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6180866Z
2026-10-24T22:14:10.6181058Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6181210Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1228:15]
2026-10-24T22:14:10.6181276Z  1227 โ”‚     freeze.set(false);
2026-10-24T22:14:10.6181354Z  1228 โ”‚   }, [freeze, selectedThreadKey]);
2026-10-24T22:14:10.6181491Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6181685Z       ยท                       โ•ฐโ”€โ”€ Unnecessary dependency `selectedThreadKey`
2026-10-24T22:14:10.6181737Z  1229 โ”‚
2026-10-24T22:14:10.6181784Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6182065Z   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-24T22:14:10.6182366Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6182368Z
2026-10-24T22:14:10.6182519Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6182665Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1058:5]
2026-10-24T22:14:10.6182777Z  1053 โ”‚   const composerPopoverHeight = useSharedValue(0);
2026-10-24T22:14:10.6182979Z  1054 โ”‚   const floatingControlCoverage = useSharedValue(
2026-10-24T22:14:10.6183072Z       ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6183231Z       ยท                    โ•ฐโ”€โ”€ `floatingControlCoverage` originates here
2026-10-24T22:14:10.6183355Z  1055 โ”‚     showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T22:14:10.6183409Z  1056 โ”‚   );
2026-10-24T22:14:10.6183473Z  1057 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6183575Z  1058 โ”‚     floatingControlCoverage.value = withTiming(
2026-10-24T22:14:10.6183662Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6183822Z       ยท                โ•ฐโ”€โ”€ `floatingControlCoverage` cannot be modified
2026-10-24T22:14:10.6183952Z  1059 โ”‚       showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T22:14:10.6184004Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6184259Z   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-24T22:14:10.6184584Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6184587Z
2026-10-24T22:14:10.6184753Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6184901Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1076:7]
2026-10-24T22:14:10.6185080Z  1066 โ”‚   const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
2026-10-24T22:14:10.6185206Z  1067 โ”‚   const combinedContentInsetEndAdjustment = useSharedValue(
2026-10-24T22:14:10.6185318Z       ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6185501Z       ยท                         โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` originates here
2026-10-24T22:14:10.6185626Z  1068 โ”‚     Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
2026-10-24T22:14:10.6185681Z  1069 โ”‚   );
2026-10-24T22:14:10.6185749Z  1070 โ”‚   useAnimatedReaction(
2026-10-24T22:14:10.6185807Z  1071 โ”‚     () =>
2026-10-24T22:14:10.6185894Z  1072 โ”‚       contentInsetEndAdjustment.value +
2026-10-24T22:14:10.6185982Z  1073 โ”‚       floatingControlCoverage.value +
2026-10-24T22:14:10.6186176Z  1074 โ”‚       (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
2026-10-24T22:14:10.6186239Z  1075 โ”‚     (value) => {
2026-10-24T22:14:10.6186348Z  1076 โ”‚       combinedContentInsetEndAdjustment.value = value;
2026-10-24T22:14:10.6186529Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6186753Z       ยท                       โ•ฐโ”€โ”€ `combinedContentInsetEndAdjustment` cannot be modified
2026-10-24T22:14:10.6186807Z  1077 โ”‚     },
2026-10-24T22:14:10.6186855Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6187113Z   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-24T22:14:10.6187408Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6187411Z
2026-10-24T22:14:10.6187659Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6187831Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T22:14:10.6187884Z  638 โ”‚
2026-10-24T22:14:10.6187946Z  639 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6188015Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6188143Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6188248Z  640 โ”‚     if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T22:14:10.6188308Z  641 โ”‚       return;
2026-10-24T22:14:10.6188361Z  642 โ”‚     }
2026-10-24T22:14:10.6188433Z  643 โ”‚     setPendingLaunchEntry({
2026-10-24T22:14:10.6188517Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6188683Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6188751Z  644 โ”‚       key: launchTargetKey,
2026-10-24T22:14:10.6188799Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6189388Z   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-24T22:14:10.6189704Z   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-24T22:14:10.6189707Z
2026-10-24T22:14:10.6189955Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6190118Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T22:14:10.6190169Z  648 โ”‚
2026-10-24T22:14:10.6190290Z  649 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6190384Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6190509Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6190618Z  650 โ”‚     if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T22:14:10.6190676Z  651 โ”‚       return;
2026-10-24T22:14:10.6190728Z  652 โ”‚     }
2026-10-24T22:14:10.6190805Z  653 โ”‚     setInitialAttachGridEntry({
2026-10-24T22:14:10.6190894Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6191063Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6191132Z  654 โ”‚       key: launchTargetKey,
2026-10-24T22:14:10.6191182Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6191766Z   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-24T22:14:10.6192078Z   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-24T22:14:10.6192080Z
2026-10-24T22:14:10.6192328Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6192492Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T22:14:10.6192541Z  743 โ”‚
2026-10-24T22:14:10.6192601Z  744 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6192668Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6192796Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6192895Z  745 โ”‚     if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T22:14:10.6192958Z  746 โ”‚       setLastGridSize({
2026-10-24T22:14:10.6193036Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6193205Z      ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6193284Z  747 โ”‚         cols: DEFAULT_TERMINAL_COLS,
2026-10-24T22:14:10.6193331Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6193909Z   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-24T22:14:10.6194226Z   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-24T22:14:10.6194230Z
2026-10-24T22:14:10.6194425Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6194617Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T22:14:10.6194670Z  537 โ”‚     });
2026-10-24T22:14:10.6194791Z  538 โ”‚   }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T22:14:10.6194898Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6195136Z      ยท                                   โ•ฐโ”€โ”€ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T22:14:10.6195341Z  539 โ”‚   const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T22:14:10.6195419Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6195705Z   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-24T22:14:10.6196006Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6196008Z
2026-10-24T22:14:10.6196201Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6196362Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T22:14:10.6196454Z  708 โ”‚     sentInitialInputKeyRef.current = null;
2026-10-24T22:14:10.6196516Z  709 โ”‚   }, [terminalKey]);
2026-10-24T22:14:10.6196596Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6196736Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T22:14:10.6196785Z  710 โ”‚
2026-10-24T22:14:10.6196834Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6197117Z   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-24T22:14:10.6197414Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6197418Z
2026-10-24T22:14:10.6197609Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6197772Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T22:14:10.6197829Z  799 โ”‚     };
2026-10-24T22:14:10.6198005Z  800 โ”‚   }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T22:14:10.6198178Z      ยท                                                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6198403Z      ยท                                                                โ”‚                   โ•ฐโ”€โ”€ Unnecessary dependency `terminalKey`
2026-10-24T22:14:10.6198607Z      ยท                                                                โ•ฐโ”€โ”€ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T22:14:10.6198659Z  801 โ”‚
2026-10-24T22:14:10.6198706Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6198997Z   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-24T22:14:10.6199301Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6199303Z
2026-10-24T22:14:10.6199444Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6199606Z      โ•ญโ”€[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T22:14:10.6199656Z  792 โ”‚   }
2026-10-24T22:14:10.6199760Z  793 โ”‚   const pasteSession = pasteSessionRef.current;
2026-10-24T22:14:10.6199868Z      ยท                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6200024Z      ยท                                   โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T22:14:10.6200073Z  794 โ”‚
2026-10-24T22:14:10.6200122Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6200632Z   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-24T22:14:10.6200942Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6200944Z
2026-10-24T22:14:10.6201148Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T22:14:10.6201282Z     โ•ญโ”€[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-24T22:14:10.6201403Z  18 โ”‚   const occurrences = collectComposerContextReferences(text);
2026-10-24T22:14:10.6201509Z  19 โ”‚   for (const occurrence of [...occurrences].reverse()) {
2026-10-24T22:14:10.6201619Z     ยท                                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6201727Z  20 โ”‚     const record = recordsById.get(occurrence.contextId);
2026-10-24T22:14:10.6201777Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6202028Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T22:14:10.6202031Z
2026-10-24T22:14:10.6202280Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T22:14:10.6202416Z       โ•ญโ”€[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-24T22:14:10.6202469Z  3754 โ”‚
2026-10-24T22:14:10.6202664Z  3755 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-24T22:14:10.6202738Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6202860Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-24T22:14:10.6202922Z  3756 โ”‚   Layer.effect(
2026-10-24T22:14:10.6202972Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6203071Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6203074Z
2026-10-24T22:14:10.6203214Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6203328Z     โ•ญโ”€[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T22:14:10.6203502Z  53 โ”‚         const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T22:14:10.6203673Z  54 โ”‚ โ•ญโ”€โ–ถ     children = cloneElement(child, {
2026-10-24T22:14:10.6203774Z  55 โ”‚ โ”‚         onTouchStart: (event) => {
2026-10-24T22:14:10.6203934Z  56 โ”‚ โ”‚           // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T22:14:10.6204088Z  57 โ”‚ โ”‚           // finger moves out of the row and back during the same gesture.
2026-10-24T22:14:10.6204210Z  58 โ”‚ โ”‚           menuPress.current.isPreparing = false;
2026-10-24T22:14:10.6204373Z  59 โ”‚ โ”‚           menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T22:14:10.6204480Z  60 โ”‚ โ”‚           pendingPress.current = null;
2026-10-24T22:14:10.6204621Z  61 โ”‚ โ”‚           child.props.onTouchStart?.(event);
2026-10-24T22:14:10.6204695Z  62 โ”‚ โ”‚         },
2026-10-24T22:14:10.6204789Z  63 โ”‚ โ”‚         onPress: (event) => {
2026-10-24T22:14:10.6205005Z  64 โ”‚ โ”‚           // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T22:14:10.6205170Z  65 โ”‚ โ”‚           // cancellation from a previous physical gesture.
2026-10-24T22:14:10.6205332Z  66 โ”‚ โ”‚           const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T22:14:10.6205515Z  67 โ”‚ โ”‚           if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T22:14:10.6205598Z  68 โ”‚ โ”‚             return;
2026-10-24T22:14:10.6205673Z  69 โ”‚ โ”‚           }
2026-10-24T22:14:10.6205809Z  70 โ”‚ โ”‚           if (isTouch && menuPress.current.isPreparing) {
2026-10-24T22:14:10.6205972Z  71 โ”‚ โ”‚             // A release can arrive between native menu preparation and display.
2026-10-24T22:14:10.6206137Z  72 โ”‚ โ”‚             // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T22:14:10.6206234Z  73 โ”‚ โ”‚             event.persist();
2026-10-24T22:14:10.6206389Z  74 โ”‚ โ”‚             pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T22:14:10.6206472Z  75 โ”‚ โ”‚             return;
2026-10-24T22:14:10.6206543Z  76 โ”‚ โ”‚           }
2026-10-24T22:14:10.6206653Z  77 โ”‚ โ”‚           child.props.onPress?.(event);
2026-10-24T22:14:10.6206727Z  78 โ”‚ โ”‚         },
2026-10-24T22:14:10.6206855Z  79 โ”‚ โ”œโ”€โ–ถ     });
2026-10-24T22:14:10.6207084Z     ยท โ•ฐโ”€โ”€โ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6207185Z  80 โ”‚         menuProps.onMenuInteractionStart = () => {
2026-10-24T22:14:10.6207241Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6207697Z   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-24T22:14:10.6207979Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6207982Z
2026-10-24T22:14:10.6208159Z   โš  react(static-components): Cannot create components during render
2026-10-24T22:14:10.6208318Z      โ•ญโ”€[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-24T22:14:10.6208400Z  196 โ”‚   const { onInput, onResize } = props;
2026-10-24T22:14:10.6208545Z  197 โ”‚   const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-24T22:14:10.6208672Z      ยท                                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6208854Z      ยท                                                     โ•ฐโ”€โ”€ The component is created during render here
2026-10-24T22:14:10.6208978Z  198 โ”‚   const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-24T22:14:10.6209028Z  199 โ”‚
2026-10-24T22:14:10.6209089Z  200 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6209173Z  201 โ”‚     terminalDebugLog("native:surface", {
2026-10-24T22:14:10.6209256Z  202 โ”‚       terminalKey: props.terminalKey,
2026-10-24T22:14:10.6209329Z  203 โ”‚       native: hasNativeSurface,
2026-10-24T22:14:10.6209457Z  204 โ”‚       hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-24T22:14:10.6209538Z  205 โ”‚       bufferLen: props.buffer.length,
2026-10-24T22:14:10.6209661Z  206 โ”‚       isRunning: props.isRunning,
2026-10-24T22:14:10.6209742Z  207 โ”‚     });
2026-10-24T22:14:10.6209894Z  208 โ”‚   }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-24T22:14:10.6209981Z  209 โ”‚   const handleNativeInput = useCallback(
2026-10-24T22:14:10.6210091Z  210 โ”‚     (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-24T22:14:10.6210184Z  211 โ”‚       if (!props.isRunning || props.readOnly) {
2026-10-24T22:14:10.6210243Z  212 โ”‚         return;
2026-10-24T22:14:10.6210298Z  213 โ”‚       }
2026-10-24T22:14:10.6210383Z  214 โ”‚       terminalDebugLog("native:onInput", {
2026-10-24T22:14:10.6210530Z  215 โ”‚         codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-24T22:14:10.6210585Z  216 โ”‚       });
2026-10-24T22:14:10.6210667Z  217 โ”‚       onInput(event.nativeEvent.data);
2026-10-24T22:14:10.6210719Z  218 โ”‚     },
2026-10-24T22:14:10.6210819Z  219 โ”‚     [onInput, props.isRunning, props.readOnly],
2026-10-24T22:14:10.6210872Z  220 โ”‚   );
2026-10-24T22:14:10.6210958Z  221 โ”‚   const handleNativeResize = useCallback(
2026-10-24T22:14:10.6211067Z  222 โ”‚     (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-24T22:14:10.6211126Z  223 โ”‚       onResize({
2026-10-24T22:14:10.6211206Z  224 โ”‚         cols: event.nativeEvent.cols,
2026-10-24T22:14:10.6211284Z  225 โ”‚         rows: event.nativeEvent.rows,
2026-10-24T22:14:10.6211339Z  226 โ”‚       });
2026-10-24T22:14:10.6211389Z  227 โ”‚     },
2026-10-24T22:14:10.6211449Z  228 โ”‚     [onResize],
2026-10-24T22:14:10.6211499Z  229 โ”‚   );
2026-10-24T22:14:10.6211548Z  230 โ”‚
2026-10-24T22:14:10.6211626Z  231 โ”‚   if (NativeTerminalSurfaceView) {
2026-10-24T22:14:10.6211684Z  232 โ”‚     return (
2026-10-24T22:14:10.6211759Z  233 โ”‚       <View style={props.style}>
2026-10-24T22:14:10.6211841Z  234 โ”‚         <NativeTerminalSurfaceView
2026-10-24T22:14:10.6211942Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6212097Z      ยท                      โ•ฐโ”€โ”€ This component is created during render
2026-10-24T22:14:10.6212188Z  235 โ”‚           appearanceScheme={themeAppearance}
2026-10-24T22:14:10.6212238Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6212477Z   help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-24T22:14:10.6212791Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T22:14:10.6212793Z
2026-10-24T22:14:10.6213048Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6213185Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2195:5]
2026-10-24T22:14:10.6213237Z  2193 โ”‚   );
2026-10-24T22:14:10.6213301Z  2194 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6213371Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6213498Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6213567Z  2195 โ”‚     setExpandedVideo(null);
2026-10-24T22:14:10.6213647Z       ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6213814Z       ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6213883Z  2196 โ”‚     setExpandedFile(null);
2026-10-24T22:14:10.6213931Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6214587Z   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-24T22:14:10.6214931Z   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-24T22:14:10.6214934Z
2026-10-24T22:14:10.6215182Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6215313Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2700:9]
2026-10-24T22:14:10.6215445Z  2691 โ”‚   const stopFollowingEnd = useEffectEvent(() => setEndFollow(false));
2026-10-24T22:14:10.6215508Z  2692 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6215576Z       ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6215705Z       ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6215830Z  2693 โ”‚     if (!jumpToMessageId || loadedListKey !== listMountKey) return;
2026-10-24T22:14:10.6215923Z  2694 โ”‚     const index = presentedFeed.findIndex(
2026-10-24T22:14:10.6216052Z  2695 โ”‚       (entry) => entry.type === "message" && entry.id === jumpToMessageId,
2026-10-24T22:14:10.6216105Z  2696 โ”‚     );
2026-10-24T22:14:10.6216169Z  2697 โ”‚     if (index === -1) {
2026-10-24T22:14:10.6216293Z  2698 โ”‚       const runId = messageFoldRunId(props.feed, jumpToMessageId);
2026-10-24T22:14:10.6216392Z  2699 โ”‚       if (runId && !expandedTurnIds.has(runId)) {
2026-10-24T22:14:10.6216481Z  2700 โ”‚         setInteractionState((current) => ({
2026-10-24T22:14:10.6216567Z       ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6216745Z       ยท                  โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6216811Z  2701 โ”‚           ...current,
2026-10-24T22:14:10.6216861Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6217440Z   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-24T22:14:10.6217752Z   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-24T22:14:10.6217754Z
2026-10-24T22:14:10.6217976Z   โš  eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-24T22:14:10.6218154Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:70:10]
2026-10-24T22:14:10.6218315Z  69 โ”‚ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-24T22:14:10.6218446Z  70 โ”‚ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-24T22:14:10.6218540Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6218701Z     ยท                     โ•ฐโ”€โ”€ 'isMarkdownFileLinkLabel' is imported here
2026-10-24T22:14:10.6218850Z  71 โ”‚ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-24T22:14:10.6218897Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6218990Z   help: Consider removing this import.
2026-10-24T22:14:10.6218993Z
2026-10-24T22:14:10.6219193Z   โš  eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-24T22:14:10.6219325Z     โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:96:3]
2026-10-24T22:14:10.6219382Z  95 โ”‚ import {
2026-10-24T22:14:10.6219443Z  96 โ”‚   createContext,
2026-10-24T22:14:10.6219513Z     ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6219645Z     ยท         โ•ฐโ”€โ”€ 'createContext' is imported here
2026-10-24T22:14:10.6219696Z  97 โ”‚   memo,
2026-10-24T22:14:10.6219744Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6219837Z   help: Consider removing this import.
2026-10-24T22:14:10.6219840Z
2026-10-24T22:14:10.6220045Z   โš  eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T22:14:10.6220174Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:112:3]
2026-10-24T22:14:10.6220228Z  111 โ”‚ import {
2026-10-24T22:14:10.6220293Z  112 โ”‚   ActivityIndicator,
2026-10-24T22:14:10.6220376Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6220516Z      ยท           โ•ฐโ”€โ”€ 'ActivityIndicator' is imported here
2026-10-24T22:14:10.6220570Z  113 โ”‚   Image,
2026-10-24T22:14:10.6220619Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6220711Z   help: Consider removing this import.
2026-10-24T22:14:10.6220713Z
2026-10-24T22:14:10.6220906Z   โš  eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-24T22:14:10.6221033Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:119:3]
2026-10-24T22:14:10.6221093Z  118 โ”‚   Pressable,
2026-10-24T22:14:10.6221153Z  119 โ”‚   ScrollView,
2026-10-24T22:14:10.6221221Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6221348Z      ยท        โ•ฐโ”€โ”€ 'ScrollView' is imported here
2026-10-24T22:14:10.6221412Z  120 โ”‚   StyleSheet,
2026-10-24T22:14:10.6221463Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6221552Z   help: Consider removing this import.
2026-10-24T22:14:10.6221555Z
2026-10-24T22:14:10.6221746Z   โš  eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-24T22:14:10.6221876Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:121:11]
2026-10-24T22:14:10.6221933Z  120 โ”‚   StyleSheet,
2026-10-24T22:14:10.6221996Z  121 โ”‚   Text as NativeText,
2026-10-24T22:14:10.6222072Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6222202Z      ยท                โ•ฐโ”€โ”€ 'NativeText' is imported here
2026-10-24T22:14:10.6222266Z  122 โ”‚   type ColorValue,
2026-10-24T22:14:10.6222313Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6222407Z   help: Consider removing this import.
2026-10-24T22:14:10.6222410Z
2026-10-24T22:14:10.6222672Z   โš  eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-24T22:14:10.6223051Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:144:10]
2026-10-24T22:14:10.6223183Z  143 โ”‚ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-24T22:14:10.6223305Z  144 โ”‚ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-24T22:14:10.6223392Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6223540Z      ยท                   โ•ฐโ”€โ”€ 'tryOpenExternalUrl' is imported here
2026-10-24T22:14:10.6223682Z  145 โ”‚ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-24T22:14:10.6223729Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6223821Z   help: Consider removing this import.
2026-10-24T22:14:10.6223824Z
2026-10-24T22:14:10.6224038Z   โš  eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-24T22:14:10.6224169Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:147:10]
2026-10-24T22:14:10.6224297Z  146 โ”‚ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-24T22:14:10.6224416Z  147 โ”‚ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-24T22:14:10.6224503Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6224695Z      ยท                   โ•ฐโ”€โ”€ 'faviconUrlForOrigin' is imported here
2026-10-24T22:14:10.6224750Z  148 โ”‚ import {
2026-10-24T22:14:10.6224799Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6224891Z   help: Consider removing this import.
2026-10-24T22:14:10.6224894Z
2026-10-24T22:14:10.6225105Z   โš  eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-24T22:14:10.6225235Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:161:10]
2026-10-24T22:14:10.6225378Z  160 โ”‚ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-24T22:14:10.6225507Z  161 โ”‚ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-24T22:14:10.6225590Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6225734Z      ยท                  โ•ฐโ”€โ”€ 'MediaVideoPlayer' is imported here
2026-10-24T22:14:10.6225867Z  162 โ”‚ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-24T22:14:10.6225916Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6226007Z   help: Consider removing this import.
2026-10-24T22:14:10.6226010Z
2026-10-24T22:14:10.6226228Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-24T22:14:10.6226358Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:165:3]
2026-10-24T22:14:10.6226437Z  164 โ”‚   attachmentVideoPreviewSource,
2026-10-24T22:14:10.6226505Z  165 โ”‚   mediaVideoPreviewUri,
2026-10-24T22:14:10.6226585Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6226734Z      ยท             โ•ฐโ”€โ”€ 'mediaVideoPreviewUri' is imported here
2026-10-24T22:14:10.6226802Z  166 โ”‚   mediaVideoThumbnailKey,
2026-10-24T22:14:10.6226851Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6226940Z   help: Consider removing this import.
2026-10-24T22:14:10.6226945Z
2026-10-24T22:14:10.6227162Z   โš  eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-24T22:14:10.6227353Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:166:3]
2026-10-24T22:14:10.6227457Z  165 โ”‚   mediaVideoPreviewUri,
2026-10-24T22:14:10.6227524Z  166 โ”‚   mediaVideoThumbnailKey,
2026-10-24T22:14:10.6227606Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6227759Z      ยท              โ•ฐโ”€โ”€ 'mediaVideoThumbnailKey' is imported here
2026-10-24T22:14:10.6227836Z  167 โ”‚   type MediaVideoPreviewSource,
2026-10-24T22:14:10.6227883Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6227973Z   help: Consider removing this import.
2026-10-24T22:14:10.6227975Z
2026-10-24T22:14:10.6228183Z   โš  eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-24T22:14:10.6228309Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:167:8]
2026-10-24T22:14:10.6228377Z  166 โ”‚   mediaVideoThumbnailKey,
2026-10-24T22:14:10.6228456Z  167 โ”‚   type MediaVideoPreviewSource,
2026-10-24T22:14:10.6228552Z      ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6228709Z      ยท                   โ•ฐโ”€โ”€ 'MediaVideoPreviewSource' is imported here
2026-10-24T22:14:10.6228793Z  168 โ”‚ } from "../../lib/videoPreviewSource";
2026-10-24T22:14:10.6228839Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6228929Z   help: Consider removing this import.
2026-10-24T22:14:10.6228931Z
2026-10-24T22:14:10.6229124Z   โš  eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-24T22:14:10.6229253Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:175:15]
2026-10-24T22:14:10.6229420Z  174 โ”‚ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-24T22:14:10.6229560Z  175 โ”‚ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-24T22:14:10.6229649Z      ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6229794Z      ยท                      โ•ฐโ”€โ”€ 'ReviewDiffTheme' is imported here
2026-10-24T22:14:10.6229848Z  176 โ”‚ import {
2026-10-24T22:14:10.6229900Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6229989Z   help: Consider removing this import.
2026-10-24T22:14:10.6229992Z
2026-10-24T22:14:10.6230213Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-24T22:14:10.6230339Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:190:3]
2026-10-24T22:14:10.6230395Z  189 โ”‚ import {
2026-10-24T22:14:10.6230468Z  190 โ”‚   resolveMarkdownFontSizes,
2026-10-24T22:14:10.6230556Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6230714Z      ยท               โ•ฐโ”€โ”€ 'resolveMarkdownFontSizes' is imported here
2026-10-24T22:14:10.6230800Z  191 โ”‚   resolveNativeMarkdownTypography,
2026-10-24T22:14:10.6230849Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6230938Z   help: Consider removing this import.
2026-10-24T22:14:10.6230940Z
2026-10-24T22:14:10.6231189Z   โš  eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-24T22:14:10.6231317Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:197:3]
2026-10-24T22:14:10.6231390Z  196 โ”‚   normalizeNativeMarkdownUrl,
2026-10-24T22:14:10.6231480Z  197 โ”‚   resolveMarkdownInlineCodePresentation,
2026-10-24T22:14:10.6231587Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6231776Z      ยท                     โ•ฐโ”€โ”€ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-24T22:14:10.6231908Z  198 โ”‚   resolveMarkdownLinkPresentation,
2026-10-24T22:14:10.6231992Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6232080Z   help: Consider removing this import.
2026-10-24T22:14:10.6232084Z
2026-10-24T22:14:10.6232304Z   โš  eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-24T22:14:10.6232430Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:242:10]
2026-10-24T22:14:10.6232528Z  241 โ”‚ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-24T22:14:10.6232668Z  242 โ”‚ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-24T22:14:10.6232763Z      ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6232925Z      ยท                      โ•ฐโ”€โ”€ 'useMarkdownCodeHighlight' is imported here
2026-10-24T22:14:10.6232985Z  243 โ”‚ import {
2026-10-24T22:14:10.6233036Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6233125Z   help: Consider removing this import.
2026-10-24T22:14:10.6233127Z
2026-10-24T22:14:10.6233331Z   โš  eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-24T22:14:10.6233457Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:246:3]
2026-10-24T22:14:10.6233518Z  245 โ”‚   useAssetUrl,
2026-10-24T22:14:10.6233581Z  246 โ”‚   useAssetUrlState,
2026-10-24T22:14:10.6233657Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6233795Z      ยท           โ•ฐโ”€โ”€ 'useAssetUrlState' is imported here
2026-10-24T22:14:10.6233861Z  247 โ”‚   useRefreshAssetUrl,
2026-10-24T22:14:10.6233908Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6233998Z   help: Consider removing this import.
2026-10-24T22:14:10.6234000Z
2026-10-24T22:14:10.6234201Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6234333Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2197:7]
2026-10-24T22:14:10.6234403Z  2196 โ”‚     setExpandedFile(null);
2026-10-24T22:14:10.6234555Z  2197 โ”‚   }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-24T22:14:10.6234809Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6235098Z       ยท                โ”‚                  โ”‚                       โ•ฐโ”€โ”€ Unnecessary dependency `props.contentPresentation.kind`
2026-10-24T22:14:10.6235340Z       ยท                โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `props.threadId`
2026-10-24T22:14:10.6235533Z       ยท                โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-24T22:14:10.6235671Z  2198 โ”‚   const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-24T22:14:10.6235719Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6236007Z   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-24T22:14:10.6236309Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6236311Z
2026-10-24T22:14:10.6236505Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6236640Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2669:7]
2026-10-24T22:14:10.6236737Z  2668 โ”‚     reportHeaderMaterialVisibility(false);
2026-10-24T22:14:10.6236846Z  2669 โ”‚   }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-24T22:14:10.6236925Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6237071Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `feedThreadKey`
2026-10-24T22:14:10.6237121Z  2670 โ”‚
2026-10-24T22:14:10.6237168Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6237453Z   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-24T22:14:10.6237755Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6237757Z
2026-10-24T22:14:10.6237954Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6238088Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2685:7]
2026-10-24T22:14:10.6238140Z  2684 โ”‚     }
2026-10-24T22:14:10.6238267Z  2685 โ”‚   }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-24T22:14:10.6238343Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6238489Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `listMountKey`
2026-10-24T22:14:10.6238628Z  2686 โ”‚   // Opening at a message: its run unfolds, the list stops following the end
2026-10-24T22:14:10.6238678Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6238959Z   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-24T22:14:10.6239264Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6239268Z
2026-10-24T22:14:10.6239460Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6239595Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2881:7]
2026-10-24T22:14:10.6239650Z  2880 โ”‚     }
2026-10-24T22:14:10.6239826Z  2881 โ”‚   }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-24T22:14:10.6240021Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6240316Z       ยท              โ”‚                  โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkRows`
2026-10-24T22:14:10.6240544Z       ยท              โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkGroups`
2026-10-24T22:14:10.6240694Z       ยท              โ•ฐโ”€โ”€ Unnecessary dependency `expandedTurnIds`
2026-10-24T22:14:10.6240744Z  2882 โ”‚
2026-10-24T22:14:10.6240791Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6241074Z   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-24T22:14:10.6241377Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6241379Z
2026-10-24T22:14:10.6241560Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-24T22:14:10.6241694Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:627:9]
2026-10-24T22:14:10.6241748Z  626 โ”‚       };
2026-10-24T22:14:10.6241860Z  627 โ”‚     }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-24T22:14:10.6242045Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6242280Z      ยท                  โ”‚                 โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `httpBaseUrl`
2026-10-24T22:14:10.6242469Z      ยท                  โ”‚                 โ•ฐโ”€โ”€ Unnecessary dependency `attachment.id`
2026-10-24T22:14:10.6242627Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-24T22:14:10.6242687Z  628 โ”‚   );
2026-10-24T22:14:10.6242738Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6243043Z   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-24T22:14:10.6243344Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6243346Z
2026-10-24T22:14:10.6243599Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6243765Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-24T22:14:10.6243815Z  76 โ”‚
2026-10-24T22:14:10.6243876Z  77 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6243946Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6244075Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6244199Z  78 โ”‚     const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-24T22:14:10.6244264Z  79 โ”‚     setHostInput(host);
2026-10-24T22:14:10.6244336Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6244497Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6244571Z  80 โ”‚     setCodeInput(code);
2026-10-24T22:14:10.6244619Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6245232Z   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-24T22:14:10.6245591Z   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-24T22:14:10.6245621Z
2026-10-24T22:14:10.6245871Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6246035Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-24T22:14:10.6246085Z  82 โ”‚
2026-10-24T22:14:10.6246145Z  83 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6246215Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6246335Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6246421Z  84 โ”‚     if (routePairingUrl.length === 0) {
2026-10-24T22:14:10.6246479Z  85 โ”‚       return;
2026-10-24T22:14:10.6246529Z  86 โ”‚     }
2026-10-24T22:14:10.6246581Z  87 โ”‚
2026-10-24T22:14:10.6246698Z  88 โ”‚     const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-24T22:14:10.6246760Z  89 โ”‚     setHostInput(host);
2026-10-24T22:14:10.6246832Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6246993Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6247056Z  90 โ”‚     setCodeInput(code);
2026-10-24T22:14:10.6247105Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6247684Z   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-24T22:14:10.6248004Z   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-24T22:14:10.6248008Z
2026-10-24T22:14:10.6248254Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6248417Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-24T22:14:10.6248468Z  92 โ”‚
2026-10-24T22:14:10.6248528Z  93 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6248594Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6248716Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6248796Z  94 โ”‚     if (pairingConnectionError) {
2026-10-24T22:14:10.6248866Z  95 โ”‚       setIsSubmitting(false);
2026-10-24T22:14:10.6248943Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6249151Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6249235Z  96 โ”‚     }
2026-10-24T22:14:10.6249283Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6249857Z   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-24T22:14:10.6250168Z   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-24T22:14:10.6250170Z
2026-10-24T22:14:10.6250401Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T22:14:10.6250537Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-24T22:14:10.6250657Z  984 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-24T22:14:10.6250892Z  985 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-24T22:14:10.6251009Z  986 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-24T22:14:10.6251139Z  987 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-24T22:14:10.6251273Z  988 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-24T22:14:10.6251320Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6251395Z   help: Switch to `Set`
2026-10-24T22:14:10.6251397Z
2026-10-24T22:14:10.6251544Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6251694Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T22:14:10.6251865Z  151 โ”‚         <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T22:14:10.6251941Z  152 โ”‚           {props.children(open)}
2026-10-24T22:14:10.6252028Z      ยท                           โ”€โ”€โ”ฌโ”€
2026-10-24T22:14:10.6252182Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T22:14:10.6252242Z  153 โ”‚         </View>
2026-10-24T22:14:10.6252290Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6252746Z   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-24T22:14:10.6253034Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6253038Z
2026-10-24T22:14:10.6253228Z   โš  react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T22:14:10.6253371Z      โ•ญโ”€[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T22:14:10.6253450Z  139 โ”‚       if (action.id !== undefined) {
2026-10-24T22:14:10.6253525Z  140 โ”‚         props.onPressAction?.({
2026-10-24T22:14:10.6253595Z      ยท         โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6253720Z      ยท           โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-24T22:14:10.6253809Z  141 โ”‚           nativeEvent: { event: action.id },
2026-10-24T22:14:10.6253998Z  142 โ”‚         } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T22:14:10.6254081Z  143 โ”‚       }
2026-10-24T22:14:10.6254132Z  144 โ”‚     },
2026-10-24T22:14:10.6254210Z  145 โ”‚     [close, props.onPressAction],
2026-10-24T22:14:10.6254301Z      ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6254509Z      ยท                      โ•ฐโ”€โ”€ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T22:14:10.6254571Z  146 โ”‚   );
2026-10-24T22:14:10.6254619Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6255113Z   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-24T22:14:10.6255424Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6255429Z
2026-10-24T22:14:10.6255705Z   โš  react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T22:14:10.6255857Z      โ•ญโ”€[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T22:14:10.6255911Z  162 โ”‚   keys,
2026-10-24T22:14:10.6255981Z  163 โ”‚   overridingProjects = [],
2026-10-24T22:14:10.6256062Z      ยท                        โ”€โ”€
2026-10-24T22:14:10.6256125Z  164 โ”‚   onClearOverrides,
2026-10-24T22:14:10.6256174Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6256484Z   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-24T22:14:10.6256486Z
2026-10-24T22:14:10.6256725Z   โš  eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-24T22:14:10.6256848Z     โ•ญโ”€[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-24T22:14:10.6257025Z  34 โ”‚     const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-24T22:14:10.6257116Z  35 โ”‚       instanceId === configured ? true : false,
2026-10-24T22:14:10.6257230Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6257281Z  36 โ”‚     );
2026-10-24T22:14:10.6257331Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6257422Z   help: Remove this ternary operator
2026-10-24T22:14:10.6257425Z
2026-10-24T22:14:10.6257577Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6257735Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-24T22:14:10.6257832Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-24T22:14:10.6257924Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-24T22:14:10.6258003Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6258138Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-24T22:14:10.6258189Z  55 โ”‚
2026-10-24T22:14:10.6258251Z  56 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6258311Z  57 โ”‚     if (pulse) {
2026-10-24T22:14:10.6258395Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-24T22:14:10.6258471Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6258608Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-24T22:14:10.6258674Z  59 โ”‚         withTiming(1, {
2026-10-24T22:14:10.6258723Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6259037Z   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-24T22:14:10.6259365Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6259368Z
2026-10-24T22:14:10.6259619Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6259753Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T22:14:10.6259853Z  66 โ”‚   const { id: attachmentId, fileUri } = attachment;
2026-10-24T22:14:10.6259915Z  67 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6259982Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6260113Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6260176Z  68 โ”‚     setUri(null);
2026-10-24T22:14:10.6260244Z     ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6260405Z     ยท        โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6260465Z  69 โ”‚     setError(null);
2026-10-24T22:14:10.6260513Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6261102Z   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-24T22:14:10.6261417Z   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-24T22:14:10.6261423Z
2026-10-24T22:14:10.6261621Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6261753Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T22:14:10.6261804Z  90 โ”‚     };
2026-10-24T22:14:10.6261880Z  91 โ”‚   }, [attachmentId, fileUri]);
2026-10-24T22:14:10.6261996Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6262172Z     ยท             โ”‚          โ•ฐโ”€โ”€ Unnecessary dependency `fileUri`
2026-10-24T22:14:10.6262316Z     ยท             โ•ฐโ”€โ”€ Unnecessary dependency `attachmentId`
2026-10-24T22:14:10.6262447Z  92 โ”‚   const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T22:14:10.6262496Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6262791Z   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-24T22:14:10.6263138Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6263140Z
2026-10-24T22:14:10.6263349Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6263485Z      โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T22:14:10.6263548Z  212 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6263657Z  213 โ”‚     if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T22:14:10.6263755Z      ยท                                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6263965Z      ยท                                    โ•ฐโ”€โ”€ Missing dependency `props`
2026-10-24T22:14:10.6264105Z  214 โ”‚   }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T22:14:10.6264213Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6264434Z      ยท                                       โ•ฐโ”€โ”€ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T22:14:10.6264504Z  215 โ”‚   const { source } = props;
2026-10-24T22:14:10.6264554Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6264991Z   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-24T22:14:10.6265300Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6265305Z
2026-10-24T22:14:10.6265513Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6265652Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-24T22:14:10.6265752Z  772 โ”‚     if (settingsSheetPresentation.isActive) {
2026-10-24T22:14:10.6265877Z  773 โ”‚       settingsRoutePresentation.present(settingsRouteSession);
2026-10-24T22:14:10.6265969Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6266136Z      ยท                   โ•ฐโ”€โ”€ Missing dependency `settingsRoutePresentation`
2026-10-24T22:14:10.6266188Z  774 โ”‚     }
2026-10-24T22:14:10.6266387Z  775 โ”‚   }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-24T22:14:10.6266499Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6266775Z      ยท                       โ•ฐโ”€โ”€ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-24T22:14:10.6266826Z  776 โ”‚
2026-10-24T22:14:10.6266873Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6267282Z   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-24T22:14:10.6267586Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6267588Z
2026-10-24T22:14:10.6267742Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6267886Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-24T22:14:10.6268043Z  387 โ”‚     typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-24T22:14:10.6268175Z  388 โ”‚   const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-24T22:14:10.6268262Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6268412Z      ยท                   โ•ฐโ”€โ”€ `animatedBorderRadius` originates here
2026-10-24T22:14:10.6268563Z  389 โ”‚   const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-24T22:14:10.6268633Z  390 โ”‚   useLayoutEffect(() => {
2026-10-24T22:14:10.6268730Z  391 โ”‚     animatedBorderRadius.value = shouldAnimate
2026-10-24T22:14:10.6268814Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6269019Z      ยท               โ•ฐโ”€โ”€ `animatedBorderRadius` cannot be modified
2026-10-24T22:14:10.6269135Z  392 โ”‚       ? withTiming(targetBorderRadius, {
2026-10-24T22:14:10.6269184Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6269443Z   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-24T22:14:10.6269741Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6269743Z
2026-10-24T22:14:10.6269993Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6270140Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-24T22:14:10.6270197Z  61 โ”‚   }, []);
2026-10-24T22:14:10.6270263Z  62 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6270332Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6270460Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6270604Z  63 โ”‚     if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-24T22:14:10.6270724Z     ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6270922Z     ยท                                                              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6270998Z  64 โ”‚   }, [playbackUrl, resolvedUrl]);
2026-10-24T22:14:10.6271046Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6271638Z   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-24T22:14:10.6271952Z   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-24T22:14:10.6271955Z
2026-10-24T22:14:10.6272163Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-24T22:14:10.6272265Z       โ•ญโ”€[apps/mobile/src/Stack.tsx:1079:21]
2026-10-24T22:14:10.6272327Z  1078 โ”‚     <Navigator
2026-10-24T22:14:10.6272456Z  1079 โ”‚       screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T22:14:10.6272587Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6272670Z  1080 โ”‚       screenOptions={({ route }) =>
2026-10-24T22:14:10.6272768Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6273153Z   help: Move this component definition out of the parent component `AdaptiveRootStack` and pass data as props. If you want to allow component creation in props, set `allowAsProps` option to true.
2026-10-24T22:14:10.6273156Z
2026-10-24T22:14:10.6273383Z   โš  eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-24T22:14:10.6273541Z       โ•ญโ”€[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-24T22:14:10.6273593Z  1397 โ”‚
2026-10-24T22:14:10.6273676Z  1398 โ”‚ function assertUserMessagesExclude(
2026-10-24T22:14:10.6273776Z       ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6273939Z       ยท                      โ•ฐโ”€โ”€ 'assertUserMessagesExclude' is declared here
2026-10-24T22:14:10.6274051Z  1399 โ”‚   projection: OrchestrationV2ThreadProjection,
2026-10-24T22:14:10.6274104Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6274205Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6274208Z
2026-10-24T22:14:10.6274457Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6274631Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:406:5]
2026-10-24T22:14:10.6274683Z  404 โ”‚
2026-10-24T22:14:10.6274747Z  405 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6274815Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6274941Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6275029Z  406 โ”‚     setInspectorSelection((current) => {
2026-10-24T22:14:10.6275114Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6275285Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6275385Z  407 โ”‚       if (props.renderInspector === undefined) {
2026-10-24T22:14:10.6275433Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6276019Z   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-24T22:14:10.6276331Z   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-24T22:14:10.6276335Z
2026-10-24T22:14:10.6276547Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-24T22:14:10.6276698Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:534:24]
2026-10-24T22:14:10.6276852Z  533 โ”‚       const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-24T22:14:10.6277020Z  534 โ”‚ โ•ญโ”€โ–ถ   const GitInspector = () => (
2026-10-24T22:14:10.6277112Z  535 โ”‚ โ”‚       <GitOverviewSheet
2026-10-24T22:14:10.6277229Z  536 โ”‚ โ”‚         headerInset={inspectorHeaderInset}
2026-10-24T22:14:10.6277333Z  537 โ”‚ โ”‚         presentation="inspector"
2026-10-24T22:14:10.6277508Z  538 โ”‚ โ”‚         route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-24T22:14:10.6277580Z  539 โ”‚ โ”‚       />
2026-10-24T22:14:10.6277759Z  540 โ”‚ โ•ฐโ”€โ–ถ   );
2026-10-24T22:14:10.6277865Z  541 โ”‚       const FilesInspector = () =>
2026-10-24T22:14:10.6277913Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6278126Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-24T22:14:10.6278128Z
2026-10-24T22:14:10.6278335Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-24T22:14:10.6278485Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:541:26]
2026-10-24T22:14:10.6278540Z  540 โ”‚       );
2026-10-24T22:14:10.6278702Z  541 โ”‚ โ•ญโ”€โ–ถ   const FilesInspector = () =>
2026-10-24T22:14:10.6278851Z  542 โ”‚ โ”‚       selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-24T22:14:10.6278963Z  543 โ”‚ โ”‚         <ThreadFileNavigatorPane
2026-10-24T22:14:10.6279072Z  544 โ”‚ โ”‚           cwd={selectedThreadCwd}
2026-10-24T22:14:10.6279208Z  545 โ”‚ โ”‚           environmentId={selectedThread.environmentId}
2026-10-24T22:14:10.6279326Z  546 โ”‚ โ”‚           headerInset={inspectorHeaderInset}
2026-10-24T22:14:10.6279471Z  547 โ”‚ โ”‚           projectName={selectedThreadProject?.title ?? "Files"}
2026-10-24T22:14:10.6279570Z  548 โ”‚ โ”‚           selectedPath={null}
2026-10-24T22:14:10.6279698Z  549 โ”‚ โ”‚           onSelectFile={handleSelectInspectorFile}
2026-10-24T22:14:10.6279771Z  550 โ”‚ โ”‚         />
2026-10-24T22:14:10.6279908Z  551 โ”‚ โ•ฐโ”€โ–ถ     ) : null;
2026-10-24T22:14:10.6280060Z  552 โ”‚       const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-24T22:14:10.6280111Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6280321Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-24T22:14:10.6280324Z
2026-10-24T22:14:10.6280535Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6280702Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-24T22:14:10.6280779Z  248 โ”‚       mountedRef.current = false;
2026-10-24T22:14:10.6280852Z  249 โ”‚       flow.setBranchQuery("");
2026-10-24T22:14:10.6280920Z      ยท       โ”€โ”€โ”ฌโ”€
2026-10-24T22:14:10.6281046Z      ยท         โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-24T22:14:10.6281099Z  250 โ”‚     };
2026-10-24T22:14:10.6281174Z  251 โ”‚   }, [flow.setBranchQuery]);
2026-10-24T22:14:10.6281262Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6281461Z      ยท                โ•ฐโ”€โ”€ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-24T22:14:10.6281511Z  252 โ”‚
2026-10-24T22:14:10.6281558Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6281970Z   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-24T22:14:10.6282276Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6282279Z
2026-10-24T22:14:10.6282479Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6282670Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
2026-10-24T22:14:10.6282721Z  107 โ”‚   );
2026-10-24T22:14:10.6282872Z  108 โ”‚   const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
2026-10-24T22:14:10.6282958Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6283105Z      ยท                  โ•ฐโ”€โ”€ `separationProgress` originates here
2026-10-24T22:14:10.6283154Z  109 โ”‚
2026-10-24T22:14:10.6283217Z  110 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6283387Z  111 โ”‚     separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
2026-10-24T22:14:10.6283469Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6283617Z      ยท              โ•ฐโ”€โ”€ `separationProgress` cannot be modified
2026-10-24T22:14:10.6283727Z  112 โ”‚   }, [props.showScrollToEnd, separationProgress]);
2026-10-24T22:14:10.6283779Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6284037Z   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-24T22:14:10.6284334Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6284337Z
2026-10-24T22:14:10.6284488Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6284671Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T22:14:10.6284780Z  128 โ”‚   // and repeatedly retargets the animation as it grows.
2026-10-24T22:14:10.6284891Z  129 โ”‚   const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T22:14:10.6284973Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6285107Z      ยท               โ•ฐโ”€โ”€ `capsuleWidth` originates here
2026-10-24T22:14:10.6285214Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-24T22:14:10.6285324Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T22:14:10.6285426Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-24T22:14:10.6285519Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-24T22:14:10.6285580Z  134 โ”‚       return;
2026-10-24T22:14:10.6285631Z  135 โ”‚     }
2026-10-24T22:14:10.6285733Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-24T22:14:10.6285818Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-24T22:14:10.6285956Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T22:14:10.6286036Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6286176Z      ยท           โ•ฐโ”€โ”€ `capsuleWidth` cannot be modified
2026-10-24T22:14:10.6286229Z  139 โ”‚   };
2026-10-24T22:14:10.6286279Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6286535Z   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-24T22:14:10.6286832Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6286835Z
2026-10-24T22:14:10.6286986Z   โš  react(immutability): This value cannot be modified
2026-10-24T22:14:10.6287145Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T22:14:10.6287304Z  128 โ”‚   // and repeatedly retargets the animation as it grows.
2026-10-24T22:14:10.6287450Z  129 โ”‚   const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T22:14:10.6287529Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6287664Z      ยท               โ•ฐโ”€โ”€ `capsuleWidth` originates here
2026-10-24T22:14:10.6287769Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-24T22:14:10.6287879Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T22:14:10.6287980Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-24T22:14:10.6288072Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-24T22:14:10.6288130Z  134 โ”‚       return;
2026-10-24T22:14:10.6288181Z  135 โ”‚     }
2026-10-24T22:14:10.6288282Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-24T22:14:10.6288364Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-24T22:14:10.6288506Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T22:14:10.6288558Z  139 โ”‚   };
2026-10-24T22:14:10.6288646Z  140 โ”‚   const hasStatus = props.status !== null;
2026-10-24T22:14:10.6288774Z  141 โ”‚   const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T22:14:10.6288836Z  142 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6288900Z  143 โ”‚     if (!hasStatus) {
2026-10-24T22:14:10.6288984Z  144 โ”‚       measuredWidthRef.current = null;
2026-10-24T22:14:10.6289059Z  145 โ”‚       capsuleWidth.value = null;
2026-10-24T22:14:10.6289132Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6289272Z      ยท             โ•ฐโ”€โ”€ `capsuleWidth` cannot be modified
2026-10-24T22:14:10.6289324Z  146 โ”‚     }
2026-10-24T22:14:10.6289373Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6289635Z   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-24T22:14:10.6289937Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6289940Z
2026-10-24T22:14:10.6290135Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T22:14:10.6290297Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T22:14:10.6290426Z  141 โ”‚   const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T22:14:10.6290488Z  142 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6290564Z      ยท             โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6290784Z      ยท                โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T22:14:10.6290850Z  143 โ”‚     if (!hasStatus) {
2026-10-24T22:14:10.6290934Z  144 โ”‚       measuredWidthRef.current = null;
2026-10-24T22:14:10.6291007Z  145 โ”‚       capsuleWidth.value = null;
2026-10-24T22:14:10.6291081Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6291214Z      ยท             โ•ฐโ”€โ”€ This modifies `capsuleWidth`
2026-10-24T22:14:10.6291266Z  146 โ”‚     }
2026-10-24T22:14:10.6291316Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6291653Z   help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T22:14:10.6291950Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6292001Z
2026-10-24T22:14:10.6292222Z   โš  react(immutability): Cannot modify local variables after render completes
2026-10-24T22:14:10.6292381Z      โ•ญโ”€[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T22:14:10.6292489Z  130 โ”‚   const measuredWidthRef = useRef<number | null>(null);
2026-10-24T22:14:10.6292602Z  131 โ”‚   const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T22:14:10.6292721Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6292956Z      ยท                                            โ•ฐโ”€โ”€ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T22:14:10.6293060Z  132 โ”‚     const width = event.nativeEvent.layout.width;
2026-10-24T22:14:10.6293159Z  133 โ”‚     if (width === measuredWidthRef.current) {
2026-10-24T22:14:10.6293220Z  134 โ”‚       return;
2026-10-24T22:14:10.6293270Z  135 โ”‚     }
2026-10-24T22:14:10.6293371Z  136 โ”‚     const first = measuredWidthRef.current === null;
2026-10-24T22:14:10.6293455Z  137 โ”‚     measuredWidthRef.current = width;
2026-10-24T22:14:10.6293590Z  138 โ”‚     capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T22:14:10.6293664Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6293793Z      ยท           โ•ฐโ”€โ”€ This modifies `capsuleWidth`
2026-10-24T22:14:10.6293846Z  139 โ”‚   };
2026-10-24T22:14:10.6293894Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6294228Z   help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T22:14:10.6294532Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T22:14:10.6294538Z
2026-10-24T22:14:10.6294738Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6294859Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T22:14:10.6294956Z  820 โ”‚     const resolved = resolveThreadTarget(target);
2026-10-24T22:14:10.6295108Z  821 โ”‚     if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T22:14:10.6295226Z      ยท                                                        โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6295391Z      ยท                                                             โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6295468Z  822 โ”‚       return AsyncResult.failure(
2026-10-24T22:14:10.6295561Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6295865Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6296154Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6296157Z
2026-10-24T22:14:10.6296319Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6296435Z      โ•ญโ”€[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T22:14:10.6296506Z  708 โ”‚     const wokeAt = resolved
2026-10-24T22:14:10.6296638Z  709 โ”‚       ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T22:14:10.6296747Z      ยท                                              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6296907Z      ยท                                                   โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6296967Z  710 โ”‚       : null;
2026-10-24T22:14:10.6297015Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6297287Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6297573Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6297576Z
2026-10-24T22:14:10.6297773Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T22:14:10.6297892Z     โ•ญโ”€[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-24T22:14:10.6297957Z  37 โ”‚   get isConnected() {
2026-10-24T22:14:10.6298048Z  38 โ”‚     let current: FakeElement | null = this;
2026-10-24T22:14:10.6298122Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6298191Z  39 โ”‚     while (current?.parent) {
2026-10-24T22:14:10.6298240Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6298506Z   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-24T22:14:10.6298510Z
2026-10-24T22:14:10.6298803Z   โš  eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-24T22:14:10.6298963Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-24T22:14:10.6299015Z  345 โ”‚
2026-10-24T22:14:10.6299115Z  346 โ”‚ const layerFromProviderAdapter: Layer.Layer<
2026-10-24T22:14:10.6299210Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6299374Z      ยท                   โ•ฐโ”€โ”€ 'layerFromProviderAdapter' is declared here
2026-10-24T22:14:10.6299447Z  347 โ”‚   ProviderAdapterRegistryV2,
2026-10-24T22:14:10.6299495Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6299596Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6299599Z
2026-10-24T22:14:10.6299789Z   โš  eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-24T22:14:10.6299928Z     โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-24T22:14:10.6300062Z  16 โ”‚ import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-24T22:14:10.6300172Z  17 โ”‚ import { Image, Platform, StyleSheet } from "react-native";
2026-10-24T22:14:10.6300242Z     ยท          โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6300414Z     ยท            โ•ฐโ”€โ”€ 'Image' is imported here
2026-10-24T22:14:10.6300495Z  18 โ”‚
2026-10-24T22:14:10.6300542Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6300637Z   help: Consider removing this import.
2026-10-24T22:14:10.6300640Z
2026-10-24T22:14:10.6300838Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T22:14:10.6300975Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:229:6]
2026-10-24T22:14:10.6301136Z  225 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T22:14:10.6301225Z  226 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6301315Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6301772Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6301843Z  227 โ”‚       mostRecentEventCount,
2026-10-24T22:14:10.6301896Z  228 โ”‚     );
2026-10-24T22:14:10.6302017Z  229 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T22:14:10.6302147Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6302341Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6302423Z  230 โ”‚   const assumedValue = props.value;
2026-10-24T22:14:10.6302471Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6302637Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T22:14:10.6303156Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6303162Z
2026-10-24T22:14:10.6303373Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6303512Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:237:7]
2026-10-24T22:14:10.6303654Z  236 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T22:14:10.6303741Z  237 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6303829Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6304278Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6304353Z  238 โ”‚       controlledEventCount,
2026-10-24T22:14:10.6304418Z  239 โ”‚       assumedValue,
2026-10-24T22:14:10.6304470Z  240 โ”‚     );
2026-10-24T22:14:10.6304654Z  241 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T22:14:10.6304790Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6304997Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-24T22:14:10.6305085Z  242 โ”‚   const acceptNativeEvent = useCallback(
2026-10-24T22:14:10.6305133Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6305614Z   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-24T22:14:10.6305958Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6305961Z
2026-10-24T22:14:10.6306102Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6306242Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T22:14:10.6306362Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6306471Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6306588Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6306752Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T22:14:10.6306812Z  163 โ”‚     });
2026-10-24T22:14:10.6306864Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6307324Z   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-24T22:14:10.6307610Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6307613Z
2026-10-24T22:14:10.6307754Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6307895Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T22:14:10.6308015Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6308130Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6308243Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6308446Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6308502Z  163 โ”‚     });
2026-10-24T22:14:10.6308550Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6309004Z   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-24T22:14:10.6309290Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6309292Z
2026-10-24T22:14:10.6309439Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6309580Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:164:23]
2026-10-24T22:14:10.6309636Z  163 โ”‚     });
2026-10-24T22:14:10.6309723Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T22:14:10.6309845Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6310030Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T22:14:10.6310145Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-24T22:14:10.6310212Z  165 โ”‚     return JSON.stringify(
2026-10-24T22:14:10.6310260Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6310763Z   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-24T22:14:10.6311072Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6311074Z
2026-10-24T22:14:10.6311214Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6311351Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:206:5]
2026-10-24T22:14:10.6311421Z  205 โ”‚     mostRecentEventCount,
2026-10-24T22:14:10.6311506Z  206 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6311609Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6311797Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6311854Z  207 โ”‚   );
2026-10-24T22:14:10.6311905Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6312364Z   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-24T22:14:10.6312650Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6312655Z
2026-10-24T22:14:10.6312794Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6312933Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:212:5]
2026-10-24T22:14:10.6313001Z  211 โ”‚     mostRecentEventCount,
2026-10-24T22:14:10.6313088Z  212 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6313190Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6313373Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6313424Z  213 โ”‚   );
2026-10-24T22:14:10.6313473Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6313928Z   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-24T22:14:10.6314212Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6314214Z
2026-10-24T22:14:10.6314442Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T22:14:10.6314619Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:197:6]
2026-10-24T22:14:10.6314760Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6314871Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6314977Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6315437Z      ยท                                      โ•ฐโ”€โ”€ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6315490Z  163 โ”‚     });
2026-10-24T22:14:10.6315576Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T22:14:10.6315646Z  165 โ”‚     return JSON.stringify(
2026-10-24T22:14:10.6315811Z  166 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T22:14:10.6315879Z  167 โ”‚         const record =
2026-10-24T22:14:10.6315954Z  168 โ”‚           token.type === "context"
2026-10-24T22:14:10.6316115Z  169 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T22:14:10.6316178Z  170 โ”‚             : undefined;
2026-10-24T22:14:10.6316283Z  171 โ”‚         const presentation = contextChipPresentation(
2026-10-24T22:14:10.6316386Z  172 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-24T22:14:10.6316446Z  173 โ”‚           record,
2026-10-24T22:14:10.6316504Z  174 โ”‚         );
2026-10-24T22:14:10.6316585Z  175 โ”‚         const icon = contextChipIcon(
2026-10-24T22:14:10.6316647Z  176 โ”‚           presentation,
2026-10-24T22:14:10.6316791Z  177 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T22:14:10.6316849Z  178 โ”‚         );
2026-10-24T22:14:10.6316908Z  179 โ”‚         return {
2026-10-24T22:14:10.6316977Z  180 โ”‚           type: token.type,
2026-10-24T22:14:10.6317050Z  181 โ”‚           source: token.source,
2026-10-24T22:14:10.6317118Z  182 โ”‚           start: token.start,
2026-10-24T22:14:10.6317181Z  183 โ”‚           end: token.end,
2026-10-24T22:14:10.6317327Z  184 โ”‚           accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T22:14:10.6317385Z  185 โ”‚           label:
2026-10-24T22:14:10.6317460Z  186 โ”‚             token.type === "skill"
2026-10-24T22:14:10.6317562Z  187 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T22:14:10.6317642Z  188 โ”‚               : token.type === "context"
2026-10-24T22:14:10.6317881Z  189 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T22:14:10.6317962Z  190 โ”‚                 : basename(token.value),
2026-10-24T22:14:10.6318099Z  191 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T22:14:10.6318192Z  192 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-24T22:14:10.6318278Z  193 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-24T22:14:10.6318333Z  194 โ”‚         };
2026-10-24T22:14:10.6318387Z  195 โ”‚       }),
2026-10-24T22:14:10.6318442Z  196 โ”‚     );
2026-10-24T22:14:10.6318572Z  197 โ”‚   }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T22:14:10.6318719Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6318970Z      ยท                                     โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6319149Z  198 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-24T22:14:10.6319198Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6319400Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T22:14:10.6319706Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6319710Z
2026-10-24T22:14:10.6319893Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T22:14:10.6320031Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:259:5]
2026-10-24T22:14:10.6320156Z  251 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T22:14:10.6320259Z  252 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-24T22:14:10.6320349Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6320801Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6322069Z  253 โ”‚         eventCount: acknowledgedEventCount,
2026-10-24T22:14:10.6322137Z  254 โ”‚         value,
2026-10-24T22:14:10.6322213Z  255 โ”‚         selection: nextSelection,
2026-10-24T22:14:10.6322269Z  256 โ”‚       });
2026-10-24T22:14:10.6322349Z  257 โ”‚       return acknowledgedEventCount;
2026-10-24T22:14:10.6322400Z  258 โ”‚     },
2026-10-24T22:14:10.6322451Z  259 โ”‚     [],
2026-10-24T22:14:10.6322516Z      ยท     โ”€โ”ฌ
2026-10-24T22:14:10.6322705Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6322762Z  260 โ”‚   );
2026-10-24T22:14:10.6322810Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6323011Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T22:14:10.6323317Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6323320Z
2026-10-24T22:14:10.6323518Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T22:14:10.6323651Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:231:6]
2026-10-24T22:14:10.6323811Z  227 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T22:14:10.6323902Z  228 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6323993Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6324439Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6324510Z  229 โ”‚       mostRecentEventCount,
2026-10-24T22:14:10.6324593Z  230 โ”‚     );
2026-10-24T22:14:10.6324712Z  231 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T22:14:10.6324842Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6325036Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6325115Z  232 โ”‚   const assumedValue = props.value;
2026-10-24T22:14:10.6325229Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6325423Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T22:14:10.6325725Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6325727Z
2026-10-24T22:14:10.6325936Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T22:14:10.6326068Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:239:7]
2026-10-24T22:14:10.6326208Z  238 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T22:14:10.6326293Z  239 โ”‚       nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6326380Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6326831Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6326902Z  240 โ”‚       controlledEventCount,
2026-10-24T22:14:10.6326964Z  241 โ”‚       assumedValue,
2026-10-24T22:14:10.6327016Z  242 โ”‚     );
2026-10-24T22:14:10.6327171Z  243 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T22:14:10.6327305Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6327510Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-24T22:14:10.6327594Z  244 โ”‚   const acceptNativeEvent = useCallback(
2026-10-24T22:14:10.6327648Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6328064Z   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-24T22:14:10.6328369Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6328372Z
2026-10-24T22:14:10.6328511Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6328644Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T22:14:10.6328763Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6328871Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6328987Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6329152Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-24T22:14:10.6329205Z  165 โ”‚     });
2026-10-24T22:14:10.6329253Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6329711Z   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-24T22:14:10.6329996Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6329998Z
2026-10-24T22:14:10.6330186Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6330347Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T22:14:10.6330464Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6330570Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6330683Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6330886Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6330939Z  165 โ”‚     });
2026-10-24T22:14:10.6330985Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6331444Z   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-24T22:14:10.6331729Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6331731Z
2026-10-24T22:14:10.6331871Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6332002Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:166:23]
2026-10-24T22:14:10.6332053Z  165 โ”‚     });
2026-10-24T22:14:10.6332139Z  166 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T22:14:10.6332258Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6332444Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-24T22:14:10.6332559Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-24T22:14:10.6332630Z  167 โ”‚     return JSON.stringify(
2026-10-24T22:14:10.6332679Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6333132Z   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-24T22:14:10.6333414Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6333416Z
2026-10-24T22:14:10.6333554Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6333684Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:208:5]
2026-10-24T22:14:10.6333752Z  207 โ”‚     mostRecentEventCount,
2026-10-24T22:14:10.6333881Z  208 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6334011Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6334194Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6334246Z  209 โ”‚   );
2026-10-24T22:14:10.6334294Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6334775Z   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-24T22:14:10.6335059Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6335061Z
2026-10-24T22:14:10.6335204Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6335338Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:214:5]
2026-10-24T22:14:10.6335406Z  213 โ”‚     mostRecentEventCount,
2026-10-24T22:14:10.6335489Z  214 โ”‚     nativeEventSnapshotsRef.current,
2026-10-24T22:14:10.6335588Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6335769Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6335823Z  215 โ”‚   );
2026-10-24T22:14:10.6335872Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6336327Z   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-24T22:14:10.6336618Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6336623Z
2026-10-24T22:14:10.6336805Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T22:14:10.6336934Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:199:6]
2026-10-24T22:14:10.6337051Z  163 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T22:14:10.6337159Z  164 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T22:14:10.6337264Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6337721Z      ยท                                      โ•ฐโ”€โ”€ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6337775Z  165 โ”‚     });
2026-10-24T22:14:10.6337862Z  166 โ”‚     confirmedTokensRef.current = tokens;
2026-10-24T22:14:10.6337928Z  167 โ”‚     return JSON.stringify(
2026-10-24T22:14:10.6338086Z  168 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T22:14:10.6338148Z  169 โ”‚         const record =
2026-10-24T22:14:10.6338225Z  170 โ”‚           token.type === "context"
2026-10-24T22:14:10.6338385Z  171 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T22:14:10.6338448Z  172 โ”‚             : undefined;
2026-10-24T22:14:10.6338551Z  173 โ”‚         const presentation = contextChipPresentation(
2026-10-24T22:14:10.6338656Z  174 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-24T22:14:10.6338715Z  175 โ”‚           record,
2026-10-24T22:14:10.6338822Z  176 โ”‚         );
2026-10-24T22:14:10.6338991Z  177 โ”‚         const icon = contextChipIcon(
2026-10-24T22:14:10.6339055Z  178 โ”‚           presentation,
2026-10-24T22:14:10.6339192Z  179 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T22:14:10.6339247Z  180 โ”‚         );
2026-10-24T22:14:10.6339305Z  181 โ”‚         return {
2026-10-24T22:14:10.6339373Z  182 โ”‚           type: token.type,
2026-10-24T22:14:10.6339445Z  183 โ”‚           source: token.source,
2026-10-24T22:14:10.6339513Z  184 โ”‚           start: token.start,
2026-10-24T22:14:10.6339576Z  185 โ”‚           end: token.end,
2026-10-24T22:14:10.6339719Z  186 โ”‚           accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T22:14:10.6339776Z  187 โ”‚           label:
2026-10-24T22:14:10.6339850Z  188 โ”‚             token.type === "skill"
2026-10-24T22:14:10.6339957Z  189 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T22:14:10.6340037Z  190 โ”‚               : token.type === "context"
2026-10-24T22:14:10.6340266Z  191 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-24T22:14:10.6340344Z  192 โ”‚                 : basename(token.value),
2026-10-24T22:14:10.6340482Z  193 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T22:14:10.6340572Z  194 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-24T22:14:10.6340656Z  195 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-24T22:14:10.6340710Z  196 โ”‚         };
2026-10-24T22:14:10.6340764Z  197 โ”‚       }),
2026-10-24T22:14:10.6340815Z  198 โ”‚     );
2026-10-24T22:14:10.6340945Z  199 โ”‚   }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T22:14:10.6341096Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6341299Z      ยท                                     โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6341434Z  200 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-24T22:14:10.6341483Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6341683Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T22:14:10.6341988Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6341991Z
2026-10-24T22:14:10.6342172Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-24T22:14:10.6342309Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:261:5]
2026-10-24T22:14:10.6342437Z  253 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T22:14:10.6342533Z  254 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-24T22:14:10.6342622Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6343137Z      ยท                  โ•ฐโ”€โ”€ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T22:14:10.6343225Z  255 โ”‚         eventCount: acknowledgedEventCount,
2026-10-24T22:14:10.6343283Z  256 โ”‚         value,
2026-10-24T22:14:10.6343358Z  257 โ”‚         selection: nextSelection,
2026-10-24T22:14:10.6343413Z  258 โ”‚       });
2026-10-24T22:14:10.6343561Z  259 โ”‚       return acknowledgedEventCount;
2026-10-24T22:14:10.6343654Z  260 โ”‚     },
2026-10-24T22:14:10.6343706Z  261 โ”‚     [],
2026-10-24T22:14:10.6343770Z      ยท     โ”€โ”ฌ
2026-10-24T22:14:10.6343946Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6343996Z  262 โ”‚   );
2026-10-24T22:14:10.6344044Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6344242Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T22:14:10.6344545Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6344548Z
2026-10-24T22:14:10.6344801Z   โš  eslint(no-unused-vars): Type 'EnvironmentThreadSearchMatch' is imported but never used.
2026-10-24T22:14:10.6344932Z     โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:15:8]
2026-10-24T22:14:10.6345001Z  14 โ”‚   threadSearchMatchKey,
2026-10-24T22:14:10.6345083Z  15 โ”‚   type EnvironmentThreadSearchMatch,
2026-10-24T22:14:10.6345184Z     ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6345354Z     ยท                      โ•ฐโ”€โ”€ 'EnvironmentThreadSearchMatch' is imported here
2026-10-24T22:14:10.6345460Z  16 โ”‚ } from "@t3tools/client-runtime/state/thread-search";
2026-10-24T22:14:10.6345509Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6345602Z   help: Consider removing this import.
2026-10-24T22:14:10.6345606Z
2026-10-24T22:14:10.6345801Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T22:14:10.6345927Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:527:25]
2026-10-24T22:14:10.6346059Z  526 โ”‚     // range) the boundary string is identical and the chain would die.
2026-10-24T22:14:10.6346147Z  527 โ”‚   }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-24T22:14:10.6346243Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6346403Z      ยท                                โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-24T22:14:10.6346536Z  528 โ”‚   const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-24T22:14:10.6346584Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6346870Z   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-24T22:14:10.6347174Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6347181Z
2026-10-24T22:14:10.6347347Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6347471Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:518:53]
2026-10-24T22:14:10.6347553Z  517 โ”‚     if (Number.isNaN(wakeAtMs)) return;
2026-10-24T22:14:10.6347707Z  518 โ”‚     const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-24T22:14:10.6347823Z      ยท                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6347985Z      ยท                                                          โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6348062Z  519 โ”‚     const id = setTimeout(() => {
2026-10-24T22:14:10.6348109Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6348439Z   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-24T22:14:10.6348753Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6348756Z
2026-10-24T22:14:10.6348898Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6349013Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:185:9]
2026-10-24T22:14:10.6349075Z  184 โ”‚         "options",
2026-10-24T22:14:10.6349166Z  185 โ”‚         latestOptionFunctionsRef.current,
2026-10-24T22:14:10.6349272Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6349457Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6349555Z  186 โ”‚         optionFunctionWrappersRef.current,
2026-10-24T22:14:10.6349606Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6350062Z   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-24T22:14:10.6350347Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6350349Z
2026-10-24T22:14:10.6350488Z   โš  react(refs): Cannot access refs during render
2026-10-24T22:14:10.6350602Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:186:9]
2026-10-24T22:14:10.6350690Z  185 โ”‚         latestOptionFunctionsRef.current,
2026-10-24T22:14:10.6350784Z  186 โ”‚         optionFunctionWrappersRef.current,
2026-10-24T22:14:10.6350890Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6351075Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-24T22:14:10.6351163Z  187 โ”‚       ) as NativeStackNavigationOptions)
2026-10-24T22:14:10.6351211Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6351663Z   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-24T22:14:10.6351943Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T22:14:10.6351946Z
2026-10-24T22:14:10.6352168Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T22:14:10.6352283Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:346:9]
2026-10-24T22:14:10.6352381Z  345 โ”‚       const entry: ProjectSettingsOverrides = {
2026-10-24T22:14:10.6352505Z  346 โ”‚         ...(entries.get(projectId) ?? currentEntries[projectId] ?? {}),
2026-10-24T22:14:10.6352651Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6352705Z  347 โ”‚       };
2026-10-24T22:14:10.6352753Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6353011Z   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-24T22:14:10.6353014Z
2026-10-24T22:14:10.6353231Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in Array.prototype.reduce()
2026-10-24T22:14:10.6353391Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:448:24]
2026-10-24T22:14:10.6353489Z  447 โ”‚   const favorites =
2026-10-24T22:14:10.6353591Z  448 โ”‚     setModelFavorites?.reduce((current, change) => {
2026-10-24T22:14:10.6353674Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6353793Z      ยท                           โ•ฐโ”€โ”€ For this reduce
2026-10-24T22:14:10.6353871Z  449 โ”‚       const exists = current.some(
2026-10-24T22:14:10.6354039Z  450 โ”‚         (favorite) => favorite.provider === change.provider && favorite.model === change.model,
2026-10-24T22:14:10.6354094Z  451 โ”‚       );
2026-10-24T22:14:10.6354163Z  452 โ”‚       return change.favorite
2026-10-24T22:14:10.6354222Z  453 โ”‚         ? exists
2026-10-24T22:14:10.6354280Z  454 โ”‚           ? current
2026-10-24T22:14:10.6354417Z  455 โ”‚           : [...current, { provider: change.provider, model: change.model }]
2026-10-24T22:14:10.6354501Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6354661Z      ยท                   โ•ฐโ”€โ”€ From this spread
2026-10-24T22:14:10.6354735Z  456 โ”‚         : current.filter(
2026-10-24T22:14:10.6354809Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6355009Z   help: Consider using `Object.assign()` or `Array.prototype.push()` to mutate the accumulator instead.
2026-10-24T22:14:10.6355162Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T22:14:10.6355165Z
2026-10-24T22:14:10.6355345Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-24T22:14:10.6355457Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:466:3]
2026-10-24T22:14:10.6355513Z  464 โ”‚     null;
2026-10-24T22:14:10.6355628Z  465 โ”‚   let nextModelPreferences = initialModelPreferences;
2026-10-24T22:14:10.6355715Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6355837Z      ยท                 โ•ฐโ”€โ”€ From this accumulator
2026-10-24T22:14:10.6355932Z  466 โ”‚   for (const change of setModelsHidden ?? []) {
2026-10-24T22:14:10.6355995Z      ยท   โ”€โ”ฌโ”€
2026-10-24T22:14:10.6356094Z      ยท    โ•ฐโ”€โ”€ For this loop
2026-10-24T22:14:10.6356223Z  467 โ”‚     const preferences = nextModelPreferences?.[change.provider] ?? {
2026-10-24T22:14:10.6356288Z  468 โ”‚       hiddenModels: [],
2026-10-24T22:14:10.6356351Z  469 โ”‚       modelOrder: [],
2026-10-24T22:14:10.6356401Z  470 โ”‚     };
2026-10-24T22:14:10.6356573Z  471 โ”‚     const hiddenModels = preferences.hiddenModels.filter((model) => model !== change.model);
2026-10-24T22:14:10.6356726Z  472 โ”‚     if (change.hidden) hiddenModels.push(change.model);
2026-10-24T22:14:10.6356827Z  473 โ”‚     nextModelPreferences = {
2026-10-24T22:14:10.6356899Z  474 โ”‚       ...nextModelPreferences,
2026-10-24T22:14:10.6356990Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6357109Z      ยท                  โ•ฐโ”€โ”€ From this spread
2026-10-24T22:14:10.6357214Z  475 โ”‚       [change.provider]: { ...preferences, hiddenModels },
2026-10-24T22:14:10.6357261Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6357409Z   help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-24T22:14:10.6357557Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T22:14:10.6357560Z
2026-10-24T22:14:10.6357721Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6357873Z      โ•ญโ”€[apps/web/src/components/CommandPaletteThreadItems.tsx:152:58]
2026-10-24T22:14:10.6358049Z  151 โ”‚       if (threadSearchQuery.trim().length > 0 && !threadSearchQuery.startsWith(">") && !isOpen) {
2026-10-24T22:14:10.6358175Z  152 โ”‚         claimThreadOpen(thread.environmentId, thread.id, Date.now());
2026-10-24T22:14:10.6358292Z      ยท                                                          โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6358456Z      ยท                                                               โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6358508Z  153 โ”‚       }
2026-10-24T22:14:10.6358555Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6358832Z   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-24T22:14:10.6359121Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6359126Z
2026-10-24T22:14:10.6359580Z   โš  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-24T22:14:10.6359758Z      โ•ญโ”€[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T22:14:10.6359826Z  520 โ”‚                 })).delivery;
2026-10-24T22:14:10.6360019Z  521 โ”‚ โ•ญโ”€โ–ถ             while (delivery.outcome === "accepted") {
2026-10-24T22:14:10.6360128Z  522 โ”‚ โ”‚                 yield* Effect.yieldNow;
2026-10-24T22:14:10.6360274Z  523 โ”‚ โ”‚                 delivery = (yield* service.getWebhookDelivery({
2026-10-24T22:14:10.6360373Z  524 โ”‚ โ”‚                   id: task.id,
2026-10-24T22:14:10.6360484Z  525 โ”‚ โ”‚                   deliveryId: deliveryId!,
2026-10-24T22:14:10.6360577Z  526 โ”‚ โ”‚                 })).delivery;
2026-10-24T22:14:10.6360709Z  527 โ”‚ โ•ฐโ”€โ–ถ             }
2026-10-24T22:14:10.6360819Z  528 โ”‚                 assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T22:14:10.6360867Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6360869Z
2026-10-24T22:14:10.6361048Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T22:14:10.6361148Z      โ•ญโ”€[packages/shared/src/qrCode.ts:458:44]
2026-10-24T22:14:10.6361209Z  457 โ”‚   ): Array<byte> {
2026-10-24T22:14:10.6361357Z  458 โ”‚     let result: Array<byte> = divisor.map((_) => 0);
2026-10-24T22:14:10.6361480Z      ยท                                            โ”ฌ
2026-10-24T22:14:10.6361617Z      ยท                                            โ•ฐโ”€โ”€ '_' is declared here
2026-10-24T22:14:10.6361684Z  459 โ”‚     for (const b of data) {
2026-10-24T22:14:10.6361732Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6361831Z   help: Consider removing this parameter.
2026-10-24T22:14:10.6361834Z
2026-10-24T22:14:10.6362052Z   โš  eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-24T22:14:10.6362165Z     โ•ญโ”€[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-24T22:14:10.6362214Z  11 โ”‚
2026-10-24T22:14:10.6362308Z  12 โ”‚ function resolveThreadWorkspaceCwd(input: {
2026-10-24T22:14:10.6362405Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6362574Z     ยท                      โ•ฐโ”€โ”€ 'resolveThreadWorkspaceCwd' is declared here
2026-10-24T22:14:10.6362639Z  13 โ”‚   readonly thread: {
2026-10-24T22:14:10.6362689Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6362788Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6362791Z
2026-10-24T22:14:10.6363206Z   โš  t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-24T22:14:10.6363348Z      โ•ญโ”€[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
2026-10-24T22:14:10.6363431Z  262 โ”‚       ...(update._meta !== undefined
2026-10-24T22:14:10.6363592Z  263 โ”‚         ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-24T22:14:10.6363679Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6363739Z  264 โ”‚         : {}),
2026-10-24T22:14:10.6363787Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6363789Z
2026-10-24T22:14:10.6363949Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6364089Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
2026-10-24T22:14:10.6364213Z  371 โ”‚   const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-24T22:14:10.6364362Z  372 โ”‚   const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-24T22:14:10.6364472Z      ยท                                               โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6364662Z      ยท                                                    โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6364726Z  373 โ”‚   return (
2026-10-24T22:14:10.6364776Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6365048Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6365334Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6365337Z
2026-10-24T22:14:10.6365495Z   โš  react(purity): Cannot call impure function during render
2026-10-24T22:14:10.6365636Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:853:39]
2026-10-24T22:14:10.6365724Z  852 โ”‚   if (snoozeGateClock.thread !== thread) {
2026-10-24T22:14:10.6365845Z  853 โ”‚     setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-24T22:14:10.6366000Z      ยท                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6366248Z      ยท                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-24T22:14:10.6366300Z  854 โ”‚   }
2026-10-24T22:14:10.6366347Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6366613Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T22:14:10.6366899Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T22:14:10.6366901Z
2026-10-24T22:14:10.6367353Z   โš  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-24T22:14:10.6367521Z      โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-24T22:14:10.6367619Z  565 โ”‚           let afterSequence = created[0]!.sequence;
2026-10-24T22:14:10.6367810Z  566 โ”‚ โ•ญโ”€โ–ถ       for (let index = 1; index <= 32; index += 1) {
2026-10-24T22:14:10.6367906Z  567 โ”‚ โ”‚           const nextEvent = {
2026-10-24T22:14:10.6368058Z  568 โ”‚ โ”‚             id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-24T22:14:10.6368186Z  569 โ”‚ โ”‚             type: "thread.metadata-updated" as const,
2026-10-24T22:14:10.6368271Z  570 โ”‚ โ”‚             threadId,
2026-10-24T22:14:10.6368371Z  571 โ”‚ โ”‚             providerInstanceId,
2026-10-24T22:14:10.6368472Z  572 โ”‚ โ”‚             occurredAt: now,
2026-10-24T22:14:10.6368617Z  573 โ”‚ โ”‚             payload: { ...thread, title: `Race update ${index}` },
2026-10-24T22:14:10.6368739Z  574 โ”‚ โ”‚           } satisfies OrchestrationV2DomainEvent;
2026-10-24T22:14:10.6368849Z  575 โ”‚ โ”‚           const reader = yield* eventSink
2026-10-24T22:14:10.6368964Z  576 โ”‚ โ”‚             .stream({ threadId, afterSequence })
2026-10-24T22:14:10.6369089Z  577 โ”‚ โ”‚             .pipe(Stream.runHead, Effect.forkChild);
2026-10-24T22:14:10.6369190Z  578 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-24T22:14:10.6369348Z  579 โ”‚ โ”‚           const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-24T22:14:10.6369471Z  580 โ”‚ โ”‚           const received = yield* Fiber.join(reader);
2026-10-24T22:14:10.6369586Z  581 โ”‚ โ”‚           if (Option.isNone(received)) {
2026-10-24T22:14:10.6369781Z  582 โ”‚ โ”‚             return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-24T22:14:10.6369857Z  583 โ”‚ โ”‚           }
2026-10-24T22:14:10.6370013Z  584 โ”‚ โ”‚           assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-24T22:14:10.6370156Z  585 โ”‚ โ”‚           assert.equal(received.value.event.id, nextEvent.id);
2026-10-24T22:14:10.6370279Z  586 โ”‚ โ”‚           afterSequence = received.value.sequence;
2026-10-24T22:14:10.6370404Z  587 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-24T22:14:10.6370462Z  588 โ”‚         }),
2026-10-24T22:14:10.6370511Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6370513Z
2026-10-24T22:14:10.6371014Z   โš  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-24T22:14:10.6371215Z       โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2327:9]
2026-10-24T22:14:10.6371289Z  2326 โ”‚             let settled = false;
2026-10-24T22:14:10.6371446Z  2327 โ”‚ โ•ญโ”€โ–ถ         while (!settled) {
2026-10-24T22:14:10.6371598Z  2328 โ”‚ โ”‚             settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-24T22:14:10.6371725Z  2329 โ”‚ โ”‚               (effect) => effect.status === "succeeded",
2026-10-24T22:14:10.6371804Z  2330 โ”‚ โ”‚             );
2026-10-24T22:14:10.6371931Z  2331 โ”‚ โ”‚             if (!settled) yield* Effect.yieldNow;
2026-10-24T22:14:10.6372066Z  2332 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-24T22:14:10.6372177Z  2333 โ”‚           }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-24T22:14:10.6372226Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6372229Z
2026-10-24T22:14:10.6372482Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T22:14:10.6372647Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:333:7]
2026-10-24T22:14:10.6372698Z  328 โ”‚   };
2026-10-24T22:14:10.6372761Z  329 โ”‚   useEffect(() => {
2026-10-24T22:14:10.6372829Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6372956Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-24T22:14:10.6373057Z  330 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T22:14:10.6373150Z  331 โ”‚       requestedSection.current = "overview";
2026-10-24T22:14:10.6373310Z  332 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T22:14:10.6373380Z  333 โ”‚       setSection("overview");
2026-10-24T22:14:10.6373451Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6373616Z      ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-24T22:14:10.6373668Z  334 โ”‚     }
2026-10-24T22:14:10.6373716Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6374302Z   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-24T22:14:10.6374648Z   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-24T22:14:10.6374651Z
2026-10-24T22:14:10.6374851Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T22:14:10.6375016Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:6]
2026-10-24T22:14:10.6375111Z  330 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-24T22:14:10.6375200Z  331 โ”‚       requestedSection.current = "overview";
2026-10-24T22:14:10.6375279Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6375758Z      ยท               โ•ฐโ”€โ”€ 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-24T22:14:10.6375947Z  332 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T22:14:10.6376089Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6376570Z      ยท                โ”‚                          โ•ฐโ”€โ”€ 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-24T22:14:10.6377002Z      ยท                โ•ฐโ”€โ”€ 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-24T22:14:10.6377078Z  333 โ”‚       setSection("overview");
2026-10-24T22:14:10.6377133Z  334 โ”‚     }
2026-10-24T22:14:10.6377219Z  335 โ”‚   }, [guidesEnabled, section, insets.top]);
2026-10-24T22:14:10.6377325Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6377508Z      ยท                        โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6377591Z  336 โ”‚   const tabContent = activityContent;
2026-10-24T22:14:10.6377639Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6377803Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T22:14:10.6378107Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6378110Z
2026-10-24T22:14:10.6378314Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T22:14:10.6378481Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:877:6]
2026-10-24T22:14:10.6378534Z  860 โ”‚     if (
2026-10-24T22:14:10.6378645Z  861 โ”‚       lastSelection.current.path === route.params.path &&
2026-10-24T22:14:10.6378722Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6379147Z      ยท             โ•ฐโ”€โ”€ 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-24T22:14:10.6379269Z  862 โ”‚       lastSelection.current.id === route.params.fileSelectionId
2026-10-24T22:14:10.6379322Z  863 โ”‚     )
2026-10-24T22:14:10.6379380Z  864 โ”‚       return;
2026-10-24T22:14:10.6379597Z  865 โ”‚     lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-24T22:14:10.6379755Z  866 โ”‚     if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-24T22:14:10.6379838Z  867 โ”‚     setJumpPath(route.params.path);
2026-10-24T22:14:10.6379908Z  868 โ”‚     setSelectedRowId(null);
2026-10-24T22:14:10.6379983Z  869 โ”‚     jumpStarted.current = false;
2026-10-24T22:14:10.6380122Z  870 โ”‚     const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-24T22:14:10.6380211Z  871 โ”‚     if (!file || !nativeView.current) return;
2026-10-24T22:14:10.6380296Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6380726Z      ยท                        โ•ฐโ”€โ”€ 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-24T22:14:10.6380848Z  872 โ”‚     setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-24T22:14:10.6380921Z  873 โ”‚     jumpStarted.current = true;
2026-10-24T22:14:10.6381052Z  874 โ”‚     void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-24T22:14:10.6381129Z  875 โ”‚       jumpStarted.current = false;
2026-10-24T22:14:10.6381181Z  876 โ”‚     });
2026-10-24T22:14:10.6381368Z  877 โ”‚   }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-24T22:14:10.6381565Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6381777Z      ยท                                                    โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-24T22:14:10.6381891Z  878 โ”‚   const appliedFilter = useRef(filter.hideTestFiles);
2026-10-24T22:14:10.6381942Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6382104Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T22:14:10.6382406Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T22:14:10.6382408Z
2026-10-24T22:14:10.6382771Z   โš  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-24T22:14:10.6382938Z      โ•ญโ”€[packages/shared/src/otelEnvironment.ts:146:14]
2026-10-24T22:14:10.6382992Z  145 โ”‚     name,
2026-10-24T22:14:10.6383127Z  146 โ”‚     (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-24T22:14:10.6383232Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6383349Z  147 โ”‚     `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-24T22:14:10.6383396Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6383398Z
2026-10-24T22:14:10.6383586Z   โš  eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-24T22:14:10.6383676Z     โ•ญโ”€[apps/server/src/ws.ts:10:13]
2026-10-24T22:14:10.6383759Z   9 โ”‚ import * as Effect from "effect/Effect";
2026-10-24T22:14:10.6383839Z  10 โ”‚ import * as Fiber from "effect/Fiber";
2026-10-24T22:14:10.6383910Z     ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-24T22:14:10.6384034Z     ยท               โ•ฐโ”€โ”€ 'Fiber' is imported here
2026-10-24T22:14:10.6384130Z  11 โ”‚ import * as FileSystem from "effect/FileSystem";
2026-10-24T22:14:10.6384178Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6384340Z   help: Consider removing this import.
2026-10-24T22:14:10.6384380Z
2026-10-24T22:14:10.6384597Z   โš  eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-24T22:14:10.6384686Z     โ•ญโ”€[apps/server/src/ws.ts:17:13]
2026-10-24T22:14:10.6384761Z  16 โ”‚ import * as Ref from "effect/Ref";
2026-10-24T22:14:10.6384850Z  17 โ”‚ import * as Schedule from "effect/Schedule";
2026-10-24T22:14:10.6384924Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-24T22:14:10.6385053Z     ยท                 โ•ฐโ”€โ”€ 'Schedule' is imported here
2026-10-24T22:14:10.6385134Z  18 โ”‚ import * as Schema from "effect/Schema";
2026-10-24T22:14:10.6385183Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6385276Z   help: Consider removing this import.
2026-10-24T22:14:10.6385279Z
2026-10-24T22:14:10.6385572Z   โš  eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-24T22:14:10.6385668Z       โ•ญโ”€[apps/server/src/ws.ts:1286:13]
2026-10-24T22:14:10.6385816Z  1285 โ”‚       const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-24T22:14:10.6386010Z  1286 โ”‚       const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-24T22:14:10.6386110Z       ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6386273Z       ยท                         โ•ฐโ”€โ”€ 'projectSetupScriptRunner' is declared here
2026-10-24T22:14:10.6386437Z  1287 โ”‚       const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-24T22:14:10.6386486Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-24T22:14:10.6386585Z   help: Consider removing this declaration.
2026-10-24T22:14:10.6386593Z
2026-10-24T22:14:10.6386675Z Found 0 errors and 367 warnings in 5479 files (4.9s, 8 threads)
2026-10-24T22:14:10.6844238Z Post job cleanup.
2026-10-24T22:14:10.7417724Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T22:14:10.7481755Z Post job cleanup.
2026-10-24T22:14:10.7496217Z ##[start-action display=Cache full pnpm store;id=__00612745-7317-4f26-b95e-103a9e56e87a.__actions_cache]
2026-10-24T22:14:10.7792029Z Post job cleanup.
2026-10-24T22:14:10.8785637Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-bab31c3827e90e1352d302da4c761fd1b91963ae565f5f0ea70972d0942af1f6, not saving cache.
2026-10-24T22:14:10.8818654Z ##[end-action id=__00612745-7317-4f26-b95e-103a9e56e87a.__actions_cache;outcome=success;conclusion=success;duration_ms=132]
2026-10-24T22:14:10.8820830Z ##[start-action display=Cache Vite+;id=__00612745-7317-4f26-b95e-103a9e56e87a.vp_cache]
2026-10-24T22:14:10.8855435Z Post job cleanup.
2026-10-24T22:14:10.9463953Z 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-24T22:14:10.9492897Z ##[end-action id=__00612745-7317-4f26-b95e-103a9e56e87a.vp_cache;outcome=success;conclusion=success;duration_ms=67]
2026-10-24T22:14:10.9533288Z Post job cleanup.
2026-10-24T22:14:10.9919098Z [command]/usr/local/bin/git version
2026-10-24T22:14:10.9946516Z git version 2.55.0
2026-10-24T22:14:10.9996574Z Temporarily overriding HOME='/home/runner/_work/_temp/a06aeb34-0992-4226-bec0-0c7253ee3d36' before making global git config changes
2026-10-24T22:14:10.9996917Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T22:14:10.9999399Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T22:14:11.0019127Z Removing SSH command configuration
2026-10-24T22:14:11.0021857Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T22:14:11.0042403Z [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-24T22:14:11.0150604Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T22:14:11.0171864Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T22:14:11.0205367Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T22:14:11.0225251Z ##[group]Run '/job_completed.sh'
2026-10-24T22:14:11.0235117Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T22:14:11.0235279Z env:
2026-10-24T22:14:11.0235387Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 160
2026-10-24T22:14:11.0235530Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 404
2026-10-24T22:14:11.0235668Z   BLACKSMITH_CHECK_RUN_ID: 121002392470
2026-10-24T22:14:11.0235803Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T22:14:11.0235947Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T22:14:11.0236077Z ##[endgroup]
2026-10-24T22:14:11.0306954Z Docker container cache not activated, skipping hash computation.
2026-10-24T22:14:11.0562590Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T22:14:11.0603765Z Cleaning up orphan processes