GitHub check

256 KB of 594 KB loaded Download the full log (594 KB)
338 KB of earlier output not loaded
  useAssetUrlState,
2026-10-22T19:31:22.9702754Z      ยท   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9702999Z      ยท           โ•ฐโ”€โ”€ 'useAssetUrlState' is imported here
2026-10-22T19:31:22.9703091Z  233 โ”‚   useRefreshAssetUrl,
2026-10-22T19:31:22.9703194Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9703343Z   help: Consider removing this import.
2026-10-22T19:31:22.9703345Z
2026-10-22T19:31:22.9703619Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9703784Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2111:7]
2026-10-22T19:31:22.9703899Z  2110 โ”‚     setExpandedFile(null);
2026-10-22T19:31:22.9704099Z  2111 โ”‚   }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-22T19:31:22.9704634Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9705034Z       ยท                โ”‚                  โ”‚                       โ•ฐโ”€โ”€ Unnecessary dependency `props.contentPresentation.kind`
2026-10-22T19:31:22.9705279Z       ยท                โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `props.threadId`
2026-10-22T19:31:22.9705508Z       ยท                โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-22T19:31:22.9705706Z  2112 โ”‚   const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-22T19:31:22.9705821Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9706160Z   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-22T19:31:22.9706548Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9706554Z
2026-10-22T19:31:22.9706797Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9707024Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2578:7]
2026-10-22T19:31:22.9707222Z  2577 โ”‚     reportHeaderMaterialVisibility(false);
2026-10-22T19:31:22.9707436Z  2578 โ”‚   }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-22T19:31:22.9707622Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9707880Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `feedThreadKey`
2026-10-22T19:31:22.9708002Z  2579 โ”‚
2026-10-22T19:31:22.9708079Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9708451Z   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-22T19:31:22.9708824Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9708827Z
2026-10-22T19:31:22.9709268Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9709599Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2594:7]
2026-10-22T19:31:22.9709677Z  2593 โ”‚     }
2026-10-22T19:31:22.9709863Z  2594 โ”‚   }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-22T19:31:22.9710002Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9710390Z       ยท             โ•ฐโ”€โ”€ Unnecessary dependency `listMountKey`
2026-10-22T19:31:22.9710520Z  2595 โ”‚
2026-10-22T19:31:22.9710624Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9710967Z   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-22T19:31:22.9711374Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9711376Z
2026-10-22T19:31:22.9711632Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9711805Z       โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:2751:7]
2026-10-22T19:31:22.9711906Z  2750 โ”‚     }
2026-10-22T19:31:22.9712154Z  2751 โ”‚   }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-22T19:31:22.9712419Z       ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9712712Z       ยท              โ”‚                  โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkRows`
2026-10-22T19:31:22.9712982Z       ยท              โ”‚                  โ•ฐโ”€โ”€ Unnecessary dependency `expandedWorkGroups`
2026-10-22T19:31:22.9713345Z       ยท              โ•ฐโ”€โ”€ Unnecessary dependency `expandedTurnIds`
2026-10-22T19:31:22.9713462Z  2752 โ”‚
2026-10-22T19:31:22.9713535Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9713899Z   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-22T19:31:22.9714278Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9714285Z
2026-10-22T19:31:22.9714554Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-22T19:31:22.9714779Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadFeed.tsx:603:9]
2026-10-22T19:31:22.9714882Z  602 โ”‚       };
2026-10-22T19:31:22.9715048Z  603 โ”‚     }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-22T19:31:22.9715284Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9715608Z      ยท                  โ”‚                 โ”‚             โ•ฐโ”€โ”€ Unnecessary dependency `httpBaseUrl`
2026-10-22T19:31:22.9715875Z      ยท                  โ”‚                 โ•ฐโ”€โ”€ Unnecessary dependency `attachment.id`
2026-10-22T19:31:22.9716073Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `props.environmentId`
2026-10-22T19:31:22.9716169Z  604 โ”‚   );
2026-10-22T19:31:22.9716271Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9716654Z   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-22T19:31:22.9717002Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9717027Z
2026-10-22T19:31:22.9717749Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-22T19:31:22.9717964Z      โ•ญโ”€[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-22T19:31:22.9718235Z  180 โ”‚   it("sends a message without the records the wire cannot carry", () => {
2026-10-22T19:31:22.9718579Z  181 โ”‚     const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-22T19:31:22.9718765Z      ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9718877Z  182 โ”‚       version: 1,
2026-10-22T19:31:22.9719016Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9719019Z
2026-10-22T19:31:22.9719279Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9719440Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:542:25]
2026-10-22T19:31:22.9719621Z  541 โ”‚     // range) the boundary string is identical and the chain would die.
2026-10-22T19:31:22.9719755Z  542 โ”‚   }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-22T19:31:22.9719928Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9720146Z      ยท                                โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-22T19:31:22.9720307Z  543 โ”‚   const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-22T19:31:22.9720403Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9720772Z   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-22T19:31:22.9721156Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9721161Z
2026-10-22T19:31:22.9721515Z   โš  react(purity): Cannot call impure function during render
2026-10-22T19:31:22.9721697Z      โ•ญโ”€[apps/mobile/src/features/home/HomeScreen.tsx:533:53]
2026-10-22T19:31:22.9721824Z  532 โ”‚     if (Number.isNaN(wakeAtMs)) return;
2026-10-22T19:31:22.9722071Z  533 โ”‚     const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-22T19:31:22.9722246Z      ยท                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9722442Z      ยท                                                          โ•ฐโ”€โ”€ Cannot call impure function
2026-10-22T19:31:22.9722570Z  534 โ”‚     const id = setTimeout(() => {
2026-10-22T19:31:22.9722660Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9723015Z   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-22T19:31:22.9723347Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-22T19:31:22.9723350Z
2026-10-22T19:31:22.9723783Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:22.9723931Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:17:12]
2026-10-22T19:31:22.9724161Z  16 โ”‚   it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-22T19:31:22.9724380Z  17 โ”‚     expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-22T19:31:22.9724672Z     ยท            โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9724823Z  18 โ”‚       "review:write",
2026-10-22T19:31:22.9724921Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9724924Z
2026-10-22T19:31:22.9725499Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:22.9725634Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:20:18]
2026-10-22T19:31:22.9725730Z  19 โ”‚     ]);
2026-10-22T19:31:22.9725924Z  20 โ”‚     expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-22T19:31:22.9726105Z     ยท                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9726263Z  21 โ”‚     expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-22T19:31:22.9726361Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9726364Z
2026-10-22T19:31:22.9726791Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:22.9726959Z     โ•ญโ”€[packages/contracts/src/auth.test.ts:58:21]
2026-10-22T19:31:22.9727190Z  57 โ”‚   it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-22T19:31:22.9727340Z  58 โ”‚     const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-22T19:31:22.9727490Z     ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9727592Z  59 โ”‚       authenticated: true,
2026-10-22T19:31:22.9727715Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9727718Z
2026-10-22T19:31:22.9727914Z   โš  react(purity): Cannot call impure function during render
2026-10-22T19:31:22.9728126Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
2026-10-22T19:31:22.9728305Z  371 โ”‚   const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-22T19:31:22.9728520Z  372 โ”‚   const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-22T19:31:22.9728819Z      ยท                                               โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9729004Z      ยท                                                    โ•ฐโ”€โ”€ Cannot call impure function
2026-10-22T19:31:22.9729116Z  373 โ”‚   return (
2026-10-22T19:31:22.9729208Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9729582Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-22T19:31:22.9729984Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-22T19:31:22.9730032Z
2026-10-22T19:31:22.9730258Z   โš  react(purity): Cannot call impure function during render
2026-10-22T19:31:22.9730449Z      โ•ญโ”€[apps/web/src/components/sidebar/SidebarThreadRow.tsx:853:39]
2026-10-22T19:31:22.9730603Z  852 โ”‚   if (snoozeGateClock.thread !== thread) {
2026-10-22T19:31:22.9730771Z  853 โ”‚     setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-22T19:31:22.9730927Z      ยท                                       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9731138Z      ยท                                            โ•ฐโ”€โ”€ Cannot call impure function
2026-10-22T19:31:22.9731225Z  854 โ”‚   }
2026-10-22T19:31:22.9731375Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9731691Z   help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-22T19:31:22.9732061Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-22T19:31:22.9732064Z
2026-10-22T19:31:22.9732532Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9732750Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
2026-10-22T19:31:22.9732936Z  355 โ”‚   }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
2026-10-22T19:31:22.9733053Z  356 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9733173Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9733340Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9733503Z  357 โ”‚     if (!isReturningToProjectPicker) {
2026-10-22T19:31:22.9733604Z  358 โ”‚       return;
2026-10-22T19:31:22.9733709Z  359 โ”‚     }
2026-10-22T19:31:22.9733882Z  360 โ”‚     if (requestedInitialProjectAvailable) {
2026-10-22T19:31:22.9733989Z  361 โ”‚       setIsReturningToProjectPicker(false);
2026-10-22T19:31:22.9734169Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9734405Z      ยท                     โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9734506Z  362 โ”‚       return;
2026-10-22T19:31:22.9734622Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9735315Z   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-22T19:31:22.9735719Z   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-22T19:31:22.9735725Z
2026-10-22T19:31:22.9736050Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9736492Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
2026-10-22T19:31:22.9736601Z  447 โ”‚
2026-10-22T19:31:22.9736702Z  448 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9736819Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9737005Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9737146Z  449 โ”‚     if (props.pendingTaskId || props.draftId) {
2026-10-22T19:31:22.9737256Z  450 โ”‚       return;
2026-10-22T19:31:22.9737454Z  451 โ”‚     }
2026-10-22T19:31:22.9737682Z  452 โ”‚     if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
2026-10-22T19:31:22.9737872Z  453 โ”‚       lastInitialProjectRefRef.current = props.initialProjectRef;
2026-10-22T19:31:22.9737994Z  454 โ”‚       appliedInitialProjectKeyRef.current = null;
2026-10-22T19:31:22.9738125Z  455 โ”‚     }
2026-10-22T19:31:22.9738315Z  456 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-22T19:31:22.9738494Z  457 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-22T19:31:22.9738620Z  458 โ”‚     if (initialEnvironmentId && initialProjectId) {
2026-10-22T19:31:22.9738738Z  459 โ”‚       const directProject =
2026-10-22T19:31:22.9738862Z  460 โ”‚         projects.find(
2026-10-22T19:31:22.9739145Z  461 โ”‚           (project) =>
2026-10-22T19:31:22.9739362Z  462 โ”‚             project.environmentId === initialEnvironmentId && project.id === initialProjectId,
2026-10-22T19:31:22.9739465Z  463 โ”‚         ) ?? null;
2026-10-22T19:31:22.9739604Z  464 โ”‚
2026-10-22T19:31:22.9739726Z  465 โ”‚       if (directProject) {
2026-10-22T19:31:22.9739900Z  466 โ”‚         // Apply the route's project once. Re-applying on every change would
2026-10-22T19:31:22.9740097Z  467 โ”‚         // instantly revert environment/project switches made in the picker.
2026-10-22T19:31:22.9740319Z  468 โ”‚         const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
2026-10-22T19:31:22.9740523Z  469 โ”‚         if (appliedInitialProjectKeyRef.current === directProjectKey) {
2026-10-22T19:31:22.9740611Z  470 โ”‚           return;
2026-10-22T19:31:22.9740724Z  471 โ”‚         }
2026-10-22T19:31:22.9740859Z  472 โ”‚         if (props.initialProjectRef?.branch) {
2026-10-22T19:31:22.9741014Z  473 โ”‚           if (
2026-10-22T19:31:22.9741187Z  474 โ”‚             selectedProject?.environmentId !== directProject.environmentId ||
2026-10-22T19:31:22.9741344Z  475 โ”‚             selectedProject.id !== directProject.id
2026-10-22T19:31:22.9741447Z  476 โ”‚           ) {
2026-10-22T19:31:22.9741579Z  477 โ”‚             setProject(directProject);
2026-10-22T19:31:22.9741670Z  478 โ”‚             return;
2026-10-22T19:31:22.9741981Z  479 โ”‚           }
2026-10-22T19:31:22.9742109Z  480 โ”‚           if (!flow.draftKey) return;
2026-10-22T19:31:22.9742293Z  481 โ”‚           // The route completes checkout before mounting this composer. Local
2026-10-22T19:31:22.9742488Z  482 โ”‚           // mode reuses an existing worktree; worktree mode would create another.
2026-10-22T19:31:22.9742689Z  483 โ”‚           updateComposerDraftSettings(flow.draftKey, {
2026-10-22T19:31:22.9742810Z  484 โ”‚             workspaceSelection: {
2026-10-22T19:31:22.9742922Z  485 โ”‚               mode: "local",
2026-10-22T19:31:22.9743046Z  486 โ”‚               branch: props.initialProjectRef.branch,
2026-10-22T19:31:22.9743274Z  487 โ”‚               worktreePath: props.initialProjectRef.worktreePath ?? null,
2026-10-22T19:31:22.9743410Z  488 โ”‚               startFromOrigin: false,
2026-10-22T19:31:22.9743519Z  489 โ”‚             },
2026-10-22T19:31:22.9743613Z  490 โ”‚           });
2026-10-22T19:31:22.9743741Z  491 โ”‚         }
2026-10-22T19:31:22.9743940Z  492 โ”‚         appliedInitialProjectKeyRef.current = directProjectKey;
2026-10-22T19:31:22.9744043Z  493 โ”‚         if (
2026-10-22T19:31:22.9744212Z  494 โ”‚           selectedProject?.environmentId === directProject.environmentId &&
2026-10-22T19:31:22.9744349Z  495 โ”‚           selectedProject.id === directProject.id
2026-10-22T19:31:22.9744475Z  496 โ”‚         ) {
2026-10-22T19:31:22.9744763Z  497 โ”‚           return;
2026-10-22T19:31:22.9744841Z  498 โ”‚         }
2026-10-22T19:31:22.9745051Z  499 โ”‚         setProject(directProject);
2026-10-22T19:31:22.9745220Z  500 โ”‚         return;
2026-10-22T19:31:22.9745336Z  501 โ”‚       }
2026-10-22T19:31:22.9745413Z  502 โ”‚
2026-10-22T19:31:22.9745537Z  503 โ”‚       if (projects.length > 0) {
2026-10-22T19:31:22.9745684Z  504 โ”‚         setIsReturningToProjectPicker(true);
2026-10-22T19:31:22.9745867Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9746073Z      ยท                       โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9746177Z  505 โ”‚       }
2026-10-22T19:31:22.9746278Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9762729Z   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-22T19:31:22.9763252Z   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-22T19:31:22.9763256Z
2026-10-22T19:31:22.9763562Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9763741Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
2026-10-22T19:31:22.9763803Z  545 โ”‚
2026-10-22T19:31:22.9763881Z  546 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9763964Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9764106Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9764220Z  547 โ”‚     const shareId = props.incomingShareId;
2026-10-22T19:31:22.9764321Z  548 โ”‚     const draftKey = flow.draftKey;
2026-10-22T19:31:22.9764435Z  549 โ”‚     const destinationProject = selectedProject;
2026-10-22T19:31:22.9764647Z  550 โ”‚     const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-22T19:31:22.9764793Z  551 โ”‚     const initialProjectId = props.initialProjectRef?.projectId;
2026-10-22T19:31:22.9764895Z  552 โ”‚     const selectedProjectMatchesRoute =
2026-10-22T19:31:22.9764986Z  553 โ”‚       !initialEnvironmentId ||
2026-10-22T19:31:22.9765062Z  554 โ”‚       !initialProjectId ||
2026-10-22T19:31:22.9765216Z  555 โ”‚       (destinationProject?.environmentId === initialEnvironmentId &&
2026-10-22T19:31:22.9765331Z  556 โ”‚         destinationProject.id === initialProjectId);
2026-10-22T19:31:22.9765403Z  557 โ”‚     if (
2026-10-22T19:31:22.9765475Z  558 โ”‚       !shareId ||
2026-10-22T19:31:22.9765555Z  559 โ”‚       !draftKey ||
2026-10-22T19:31:22.9765642Z  560 โ”‚       !destinationProject ||
2026-10-22T19:31:22.9765737Z  561 โ”‚       !selectedProjectMatchesRoute ||
2026-10-22T19:31:22.9765832Z  562 โ”‚       cancelledIncomingShareId === shareId
2026-10-22T19:31:22.9765910Z  563 โ”‚     ) {
2026-10-22T19:31:22.9765996Z  564 โ”‚       return;
2026-10-22T19:31:22.9766074Z  565 โ”‚     }
2026-10-22T19:31:22.9766178Z  566 โ”‚     const importKey = `${shareId}:${draftKey}`;
2026-10-22T19:31:22.9766243Z  567 โ”‚     if (
2026-10-22T19:31:22.9766376Z  568 โ”‚       startedShareImportKeyRef.current === importKey ||
2026-10-22T19:31:22.9766498Z  569 โ”‚       cancellingShareImportKeyRef.current === importKey
2026-10-22T19:31:22.9766558Z  570 โ”‚     ) {
2026-10-22T19:31:22.9766627Z  571 โ”‚       return;
2026-10-22T19:31:22.9766688Z  572 โ”‚     }
2026-10-22T19:31:22.9766744Z  573 โ”‚
2026-10-22T19:31:22.9767052Z  574 โ”‚     if (!incomingShare) {
2026-10-22T19:31:22.9767325Z  575 โ”‚       if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
2026-10-22T19:31:22.9767469Z  576 โ”‚         alertedUnavailableIncomingShareIdRef.current = shareId;
2026-10-22T19:31:22.9767539Z  577 โ”‚         Dialog.alert(
2026-10-22T19:31:22.9767635Z  578 โ”‚           "Shared content unavailable",
2026-10-22T19:31:22.9767838Z  579 โ”‚           "The shared content is no longer in the inbox. You can continue editing this task draft.",
2026-10-22T19:31:22.9767911Z  580 โ”‚         );
2026-10-22T19:31:22.9767975Z  581 โ”‚       }
2026-10-22T19:31:22.9768052Z  582 โ”‚       return;
2026-10-22T19:31:22.9768114Z  583 โ”‚     }
2026-10-22T19:31:22.9768179Z  584 โ”‚
2026-10-22T19:31:22.9768243Z  585 โ”‚     if (
2026-10-22T19:31:22.9768418Z  586 โ”‚       incomingShare.attachments.some((attachment) => attachment.type === "file") &&
2026-10-22T19:31:22.9768538Z  587 โ”‚       selectedEnvironmentServerConfig === null
2026-10-22T19:31:22.9768606Z  588 โ”‚     ) {
2026-10-22T19:31:22.9768668Z  589 โ”‚       return;
2026-10-22T19:31:22.9768734Z  590 โ”‚     }
2026-10-22T19:31:22.9768793Z  591 โ”‚
2026-10-22T19:31:22.9768948Z  592 โ”‚     if (alertedUnavailableIncomingShareIdRef.current === shareId) {
2026-10-22T19:31:22.9769079Z  593 โ”‚       alertedUnavailableIncomingShareIdRef.current = null;
2026-10-22T19:31:22.9769149Z  594 โ”‚     }
2026-10-22T19:31:22.9769271Z  595 โ”‚     startedShareImportKeyRef.current = importKey;
2026-10-22T19:31:22.9769344Z  596 โ”‚     const draftBackup =
2026-10-22T19:31:22.9769550Z  597 โ”‚       shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
2026-10-22T19:31:22.9769702Z  598 โ”‚     shareImportDraftBackupRef.current.set(importKey, draftBackup);
2026-10-22T19:31:22.9769812Z  599 โ”‚     const importToken = Symbol(importKey);
2026-10-22T19:31:22.9769901Z  600 โ”‚     let didReserveShare = false;
2026-10-22T19:31:22.9769993Z  601 โ”‚     let didConsumeShare = false;
2026-10-22T19:31:22.9770089Z  602 โ”‚     let needsDraftRestore = false;
2026-10-22T19:31:22.9770213Z  603 โ”‚     activeShareImportTokenRef.current = importToken;
2026-10-22T19:31:22.9770303Z  604 โ”‚     setImportingShareKey(importKey);
2026-10-22T19:31:22.9770403Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9770600Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9770683Z  605 โ”‚     void (async () => {
2026-10-22T19:31:22.9770738Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9771396Z   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-22T19:31:22.9771755Z   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-22T19:31:22.9771758Z
2026-10-22T19:31:22.9771978Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9772151Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
2026-10-22T19:31:22.9772234Z  523 โ”‚     props.initialProjectRef,
2026-10-22T19:31:22.9772324Z  524 โ”‚     props.incomingShareId,
2026-10-22T19:31:22.9772427Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9772704Z      ยท               โ•ฐโ”€โ”€ Unnecessary dependency `props.incomingShareId`
2026-10-22T19:31:22.9772829Z  525 โ”‚     props.pendingTaskId,
2026-10-22T19:31:22.9772895Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9773212Z   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-22T19:31:22.9773548Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9773551Z
2026-10-22T19:31:22.9773792Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-22T19:31:22.9773955Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
2026-10-22T19:31:22.9774088Z  542 โ”‚     loadedBranchesProjectKeyRef.current = projectKey;
2026-10-22T19:31:22.9774169Z  543 โ”‚     flow.loadBranches();
2026-10-22T19:31:22.9774255Z      ยท     โ”€โ”€โ”ฌโ”€
2026-10-22T19:31:22.9774391Z      ยท       โ•ฐโ”€โ”€ Missing dependency `flow`
2026-10-22T19:31:22.9774502Z  544 โ”‚   }, [flow.loadBranches, selectedProject]);
2026-10-22T19:31:22.9774693Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9774925Z      ยท               โ•ฐโ”€โ”€ Overly precise dependency `flow.loadBranches`, use `flow` instead
2026-10-22T19:31:22.9774989Z  545 โ”‚
2026-10-22T19:31:22.9775056Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9775507Z   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-22T19:31:22.9775845Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9775850Z
2026-10-22T19:31:22.9776065Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9776225Z      โ•ญโ”€[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
2026-10-22T19:31:22.9776301Z  765 โ”‚     flow.draftKey,
2026-10-22T19:31:22.9776389Z  766 โ”‚     hasImportedIncomingShare,
2026-10-22T19:31:22.9776493Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9776688Z      ยท                 โ•ฐโ”€โ”€ Unnecessary dependency `hasImportedIncomingShare`
2026-10-22T19:31:22.9776772Z  767 โ”‚     incomingShare,
2026-10-22T19:31:22.9776871Z  768 โ”‚     isIncomingShareInboxLoading,
2026-10-22T19:31:22.9776998Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9777199Z      ยท                  โ•ฐโ”€โ”€ Unnecessary dependency `isIncomingShareInboxLoading`
2026-10-22T19:31:22.9777296Z  769 โ”‚     isIncomingShareUnavailable,
2026-10-22T19:31:22.9777377Z  770 โ”‚     props.incomingShareId,
2026-10-22T19:31:22.9777485Z  771 โ”‚     props.initialProjectRef?.environmentId,
2026-10-22T19:31:22.9777579Z  772 โ”‚     props.initialProjectRef?.projectId,
2026-10-22T19:31:22.9777664Z  773 โ”‚     releaseShareReservation,
2026-10-22T19:31:22.9777737Z  774 โ”‚     reserveShare,
2026-10-22T19:31:22.9777827Z  775 โ”‚     selectedEnvironmentServerConfig,
2026-10-22T19:31:22.9777909Z  776 โ”‚     selectedProject,
2026-10-22T19:31:22.9777993Z  777 โ”‚     shareImportAttempt,
2026-10-22T19:31:22.9778090Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9778271Z      ยท              โ•ฐโ”€โ”€ Unnecessary dependency `shareImportAttempt`
2026-10-22T19:31:22.9778409Z  778 โ”‚   ]);
2026-10-22T19:31:22.9778514Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9778833Z   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-22T19:31:22.9779158Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9779168Z
2026-10-22T19:31:22.9779660Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeUnknownSync(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-22T19:31:22.9779806Z     โ•ญโ”€[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-22T19:31:22.9779889Z  38 โ”‚       JSON.stringify(
2026-10-22T19:31:22.9780027Z  39 โ”‚         Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-22T19:31:22.9780134Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9780219Z  40 โ”‚           { name: "a" },
2026-10-22T19:31:22.9780282Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9780286Z
2026-10-22T19:31:22.9780452Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9780619Z      โ•ญโ”€[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
2026-10-22T19:31:22.9780686Z  493 โ”‚         >
2026-10-22T19:31:22.9780777Z  494 โ”‚           {props.children(close)}
2026-10-22T19:31:22.9780879Z      ยท                           โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9781048Z      ยท                             โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-22T19:31:22.9781141Z  495 โ”‚         </ReanimatedSwipeable>
2026-10-22T19:31:22.9781211Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9781720Z   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-22T19:31:22.9782032Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9782040Z
2026-10-22T19:31:22.9782316Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9782494Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:285:5]
2026-10-22T19:31:22.9782629Z  283 โ”‚   const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
2026-10-22T19:31:22.9782785Z  284 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9782899Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9783045Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9783141Z  285 โ”‚     setNow(new Date().toISOString());
2026-10-22T19:31:22.9783222Z      ยท     โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9783400Z      ยท        โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9783553Z  286 โ”‚     const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
2026-10-22T19:31:22.9783622Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9784271Z   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-22T19:31:22.9784696Z   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-22T19:31:22.9784699Z
2026-10-22T19:31:22.9784913Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9785093Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:365:25]
2026-10-22T19:31:22.9785238Z  364 โ”‚     // range) the boundary string is identical and the chain would die.
2026-10-22T19:31:22.9785337Z  365 โ”‚   }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-22T19:31:22.9785446Z      ยท                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9785631Z      ยท                                โ•ฐโ”€โ”€ Unnecessary dependency `snoozeWakeTick`
2026-10-22T19:31:22.9785757Z  366 โ”‚   const listItems = ((): readonly SidebarListItem[] => {
2026-10-22T19:31:22.9785815Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9786125Z   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-22T19:31:22.9786458Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9786461Z
2026-10-22T19:31:22.9786648Z   โš  react(purity): Cannot call impure function during render
2026-10-22T19:31:22.9786828Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:356:53]
2026-10-22T19:31:22.9786922Z  355 โ”‚     if (Number.isNaN(wakeAtMs)) return;
2026-10-22T19:31:22.9787093Z  356 โ”‚     const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-22T19:31:22.9787228Z      ยท                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9787409Z      ยท                                                          โ•ฐโ”€โ”€ Cannot call impure function
2026-10-22T19:31:22.9787502Z  357 โ”‚     const id = setTimeout(() => {
2026-10-22T19:31:22.9787557Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9787866Z   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-22T19:31:22.9788181Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-22T19:31:22.9788184Z
2026-10-22T19:31:22.9788647Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:22.9788857Z       โ•ญโ”€[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-22T19:31:22.9788914Z  3754 โ”‚
2026-10-22T19:31:22.9789128Z  3755 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-22T19:31:22.9789210Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9789349Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-22T19:31:22.9789492Z  3756 โ”‚   Layer.effect(
2026-10-22T19:31:22.9789553Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9789672Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9789675Z
2026-10-22T19:31:22.9789934Z   โš  unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-22T19:31:22.9790087Z      โ•ญโ”€[apps/web/src/components/chat/useComposerSend.ts:978:13]
2026-10-22T19:31:22.9790224Z  977 โ”‚           const changedBeforeDecline = draftChangedSinceSend();
2026-10-22T19:31:22.9790483Z  978 โ”‚ โ•ญโ”€โ–ถ       const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-22T19:31:22.9790621Z  979 โ”‚ โ”‚           (approval) => approval.requestId,
2026-10-22T19:31:22.9790763Z  980 โ”‚ โ•ฐโ”€โ–ถ       );
2026-10-22T19:31:22.9790921Z  981 โ”‚           const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-22T19:31:22.9790987Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9791076Z   help: Switch to `Set`
2026-10-22T19:31:22.9791079Z
2026-10-22T19:31:22.9791261Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-22T19:31:22.9791478Z     โ•ญโ”€[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-22T19:31:22.9791545Z  52 โ”‚
2026-10-22T19:31:22.9791628Z  53 โ”‚   for (const {} of [
2026-10-22T19:31:22.9791713Z     ยท              โ”€โ”€
2026-10-22T19:31:22.9791798Z  54 โ”‚     { healthy: true },
2026-10-22T19:31:22.9791867Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9792121Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-22T19:31:22.9792124Z
2026-10-22T19:31:22.9792345Z   โš  typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-22T19:31:22.9792486Z     โ•ญโ”€[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-22T19:31:22.9792563Z  37 โ”‚   get isConnected() {
2026-10-22T19:31:22.9792674Z  38 โ”‚     let current: FakeElement | null = this;
2026-10-22T19:31:22.9792757Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9792842Z  39 โ”‚     while (current?.parent) {
2026-10-22T19:31:22.9792914Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9793218Z   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-22T19:31:22.9793221Z
2026-10-22T19:31:22.9793730Z   โš  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-22T19:31:22.9793904Z      โ•ญโ”€[packages/client-runtime/src/connection/supervisor.test.ts:135:3]
2026-10-22T19:31:22.9794036Z  134 โ”‚       let lastState = yield* SubscriptionRef.get(state);
2026-10-22T19:31:22.9794377Z  135 โ”‚ โ•ญโ”€โ–ถ   for (let iteration = 0; iteration < 100; iteration += 1) {
2026-10-22T19:31:22.9794629Z  136 โ”‚ โ”‚       lastState = yield* SubscriptionRef.get(state);
2026-10-22T19:31:22.9794748Z  137 โ”‚ โ”‚       if (predicate(lastState)) {
2026-10-22T19:31:22.9794857Z  138 โ”‚ โ”‚         return lastState;
2026-10-22T19:31:22.9794943Z  139 โ”‚ โ”‚       }
2026-10-22T19:31:22.9795057Z  140 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-22T19:31:22.9795189Z  141 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-22T19:31:22.9795274Z  142 โ”‚       return yield* Effect.die(
2026-10-22T19:31:22.9795334Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9795336Z
2026-10-22T19:31:22.9795553Z   โš  eslint(require-yield): This generator function does not have `yield`
2026-10-22T19:31:22.9795712Z      โ•ญโ”€[packages/provider-acp/src/server/mcpOverAcpBridge.ts:81:78]
2026-10-22T19:31:22.9795776Z   80 โ”‚
2026-10-22T19:31:22.9796066Z   81 โ”‚ โ•ญโ”€โ–ถ export const makeAcpMcpOverAcpBridge = Effect.fn("AcpMcpOverAcpBridge.make")(function* (
2026-10-22T19:31:22.9796199Z   82 โ”‚ โ”‚     options: AcpMcpOverAcpBridgeOptions,
2026-10-22T19:31:22.9796329Z   83 โ”‚ โ”‚   ): Effect.fn.Return<AcpMcpOverAcpBridge> {
2026-10-22T19:31:22.9796510Z   84 โ”‚ โ”‚     const fetchImplementation = options.fetchImplementation ?? fetch;
2026-10-22T19:31:22.9796655Z   85 โ”‚ โ”‚     const connections = new Map<string, Connection>();
2026-10-22T19:31:22.9796731Z   86 โ”‚ โ”‚
2026-10-22T19:31:22.9796964Z   87 โ”‚ โ”‚     const connectionFor = (connectionId: string): Effect.Effect<Connection, AcpMcpOverAcpError> =>
2026-10-22T19:31:22.9797077Z   88 โ”‚ โ”‚       Effect.suspend(() => {
2026-10-22T19:31:22.9797224Z   89 โ”‚ โ”‚         const connection = connections.get(connectionId);
2026-10-22T19:31:22.9797348Z   90 โ”‚ โ”‚         return connection === undefined
2026-10-22T19:31:22.9797578Z   91 โ”‚ โ”‚           ? Effect.fail(new AcpMcpOverAcpError(`Unknown MCP-over-ACP connection "${connectionId}".`))
2026-10-22T19:31:22.9797694Z   92 โ”‚ โ”‚           : Effect.succeed(connection);
2026-10-22T19:31:22.9797781Z   93 โ”‚ โ”‚       });
2026-10-22T19:31:22.9797857Z   94 โ”‚ โ”‚
2026-10-22T19:31:22.9797953Z   95 โ”‚ โ”‚     const send = (
2026-10-22T19:31:22.9798067Z   96 โ”‚ โ”‚       connection: Connection,
2026-10-22T19:31:22.9798181Z   97 โ”‚ โ”‚       message: unknown,
2026-10-22T19:31:22.9798357Z   98 โ”‚ โ”‚     ): Effect.Effect<ReadonlyArray<unknown>, AcpMcpOverAcpError> =>
2026-10-22T19:31:22.9798486Z   99 โ”‚ โ”‚       connection.mutex.withPermits(1)(
2026-10-22T19:31:22.9798598Z  100 โ”‚ โ”‚         Effect.gen(function* () {
2026-10-22T19:31:22.9798730Z  101 โ”‚ โ”‚           const body = JSON.stringify(message);
2026-10-22T19:31:22.9798882Z  102 โ”‚ โ”‚           if (Buffer.byteLength(body) > MAX_MESSAGE_BYTES) {
2026-10-22T19:31:22.9799111Z  103 โ”‚ โ”‚             return yield* Effect.fail(new AcpMcpOverAcpError("MCP-over-ACP message exceeds 8 MiB."));
2026-10-22T19:31:22.9799194Z  104 โ”‚ โ”‚           }
2026-10-22T19:31:22.9799396Z  105 โ”‚ โ”‚           const response = yield* Effect.tryPromise({
2026-10-22T19:31:22.9799544Z  106 โ”‚ โ”‚             try: (signal) =>
2026-10-22T19:31:22.9799687Z  107 โ”‚ โ”‚               fetchImplementation(options.endpoint, {
2026-10-22T19:31:22.9799793Z  108 โ”‚ โ”‚                 method: "POST",
2026-10-22T19:31:22.9799896Z  109 โ”‚ โ”‚                 signal,
2026-10-22T19:31:22.9800004Z  110 โ”‚ โ”‚                 headers: {
2026-10-22T19:31:22.9800144Z  111 โ”‚ โ”‚                   "content-type": "application/json",
2026-10-22T19:31:22.9800295Z  112 โ”‚ โ”‚                   accept: "application/json, text/event-stream",
2026-10-22T19:31:22.9800442Z  113 โ”‚ โ”‚                   authorization: options.authorization,
2026-10-22T19:31:22.9800585Z  114 โ”‚ โ”‚                   ...(connection.sessionId === null
2026-10-22T19:31:22.9800698Z  115 โ”‚ โ”‚                     ? {}
2026-10-22T19:31:22.9800852Z  116 โ”‚ โ”‚                     : { "mcp-session-id": connection.sessionId }),
2026-10-22T19:31:22.9800998Z  117 โ”‚ โ”‚                   ...(connection.protocolVersion === null
2026-10-22T19:31:22.9801098Z  118 โ”‚ โ”‚                     ? {}
2026-10-22T19:31:22.9801278Z  119 โ”‚ โ”‚                     : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-22T19:31:22.9801368Z  120 โ”‚ โ”‚                 },
2026-10-22T19:31:22.9801466Z  121 โ”‚ โ”‚                 body,
2026-10-22T19:31:22.9801559Z  122 โ”‚ โ”‚               }),
2026-10-22T19:31:22.9801670Z  123 โ”‚ โ”‚             catch: bridgeError,
2026-10-22T19:31:22.9801763Z  124 โ”‚ โ”‚           });
2026-10-22T19:31:22.9801993Z  125 โ”‚ โ”‚           connection.sessionId = response.headers.get("mcp-session-id") ?? connection.sessionId;
2026-10-22T19:31:22.9802102Z  126 โ”‚ โ”‚           if (!response.ok) {
2026-10-22T19:31:22.9802216Z  127 โ”‚ โ”‚             yield* Effect.promise(
2026-10-22T19:31:22.9802415Z  128 โ”‚ โ”‚               () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-22T19:31:22.9802501Z  129 โ”‚ โ”‚             );
2026-10-22T19:31:22.9802622Z  130 โ”‚ โ”‚             return yield* Effect.fail(
2026-10-22T19:31:22.9802843Z  131 โ”‚ โ”‚               new AcpMcpOverAcpError(`T3 Code MCP endpoint responded with HTTP ${response.status}.`),
2026-10-22T19:31:22.9802932Z  132 โ”‚ โ”‚             );
2026-10-22T19:31:22.9803022Z  133 โ”‚ โ”‚           }
2026-10-22T19:31:22.9803250Z  134 โ”‚ โ”‚           const payloads = [...(yield* Stream.runCollect(responsePayloads(response, bridgeError)))];
2026-10-22T19:31:22.9803388Z  135 โ”‚ โ”‚           for (const payload of payloads) {
2026-10-22T19:31:22.9803621Z  136 โ”‚ โ”‚             connection.protocolVersion = protocolVersionOf(payload) ?? connection.protocolVersion;
2026-10-22T19:31:22.9803704Z  137 โ”‚ โ”‚           }
2026-10-22T19:31:22.9803812Z  138 โ”‚ โ”‚           return payloads;
2026-10-22T19:31:22.9803951Z  139 โ”‚ โ”‚         }).pipe(Effect.mapError(bridgeError)),
2026-10-22T19:31:22.9804042Z  140 โ”‚ โ”‚       );
2026-10-22T19:31:22.9804118Z  141 โ”‚ โ”‚
2026-10-22T19:31:22.9804376Z  142 โ”‚ โ”‚     const disconnect = Effect.fn("mcpOverAcpBridge.disconnect")(function* (
2026-10-22T19:31:22.9804591Z  143 โ”‚ โ”‚       request: AcpSchema.DisconnectMcpRequest,
2026-10-22T19:31:22.9804844Z  144 โ”‚ โ”‚     ): Effect.fn.Return<AcpSchema.DisconnectMcpResponse, AcpMcpOverAcpError> {
2026-10-22T19:31:22.9805015Z  145 โ”‚ โ”‚       const connection = yield* connectionFor(request.connectionId);
2026-10-22T19:31:22.9805158Z  146 โ”‚ โ”‚       connections.delete(request.connectionId);
2026-10-22T19:31:22.9805295Z  147 โ”‚ โ”‚       const sessionId = connection.sessionId;
2026-10-22T19:31:22.9805407Z  148 โ”‚ โ”‚       if (sessionId !== null) {
2026-10-22T19:31:22.9805546Z  149 โ”‚ โ”‚         const response = yield* Effect.tryPromise({
2026-10-22T19:31:22.9805652Z  150 โ”‚ โ”‚           try: (signal) =>
2026-10-22T19:31:22.9805797Z  151 โ”‚ โ”‚             fetchImplementation(options.endpoint, {
2026-10-22T19:31:22.9805917Z  152 โ”‚ โ”‚               method: "DELETE",
2026-10-22T19:31:22.9806014Z  153 โ”‚ โ”‚               signal,
2026-10-22T19:31:22.9806117Z  154 โ”‚ โ”‚               headers: {
2026-10-22T19:31:22.9806258Z  155 โ”‚ โ”‚                 authorization: options.authorization,
2026-10-22T19:31:22.9806386Z  156 โ”‚ โ”‚                 "mcp-session-id": sessionId,
2026-10-22T19:31:22.9806528Z  157 โ”‚ โ”‚                 ...(connection.protocolVersion === null
2026-10-22T19:31:22.9806628Z  158 โ”‚ โ”‚                   ? {}
2026-10-22T19:31:22.9806804Z  159 โ”‚ โ”‚                   : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-22T19:31:22.9806902Z  160 โ”‚ โ”‚               },
2026-10-22T19:31:22.9806995Z  161 โ”‚ โ”‚             }),
2026-10-22T19:31:22.9807101Z  162 โ”‚ โ”‚           catch: bridgeError,
2026-10-22T19:31:22.9807192Z  163 โ”‚ โ”‚         });
2026-10-22T19:31:22.9807336Z  164 โ”‚ โ”‚         if (!response.ok && response.status !== 404) {
2026-10-22T19:31:22.9807459Z  165 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-22T19:31:22.9807578Z  166 โ”‚ โ”‚             new AcpMcpOverAcpError(
2026-10-22T19:31:22.9807775Z  167 โ”‚ โ”‚               `T3 Code MCP endpoint rejected disconnect with HTTP ${response.status}.`,
2026-10-22T19:31:22.9807867Z  168 โ”‚ โ”‚             ),
2026-10-22T19:31:22.9807953Z  169 โ”‚ โ”‚           );
2026-10-22T19:31:22.9808040Z  170 โ”‚ โ”‚         }
2026-10-22T19:31:22.9808157Z  171 โ”‚ โ”‚         yield* Effect.promise(
2026-10-22T19:31:22.9808353Z  172 โ”‚ โ”‚           () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-22T19:31:22.9808440Z  173 โ”‚ โ”‚         );
2026-10-22T19:31:22.9808521Z  174 โ”‚ โ”‚       }
2026-10-22T19:31:22.9808617Z  175 โ”‚ โ”‚       return {};
2026-10-22T19:31:22.9808698Z  176 โ”‚ โ”‚     });
2026-10-22T19:31:22.9808771Z  177 โ”‚ โ”‚
2026-10-22T19:31:22.9808862Z  178 โ”‚ โ”‚     return {
2026-10-22T19:31:22.9809053Z  179 โ”‚ โ”‚       connect: Effect.fn("mcpOverAcpBridge.connect")(function* (request) {
2026-10-22T19:31:22.9809191Z  180 โ”‚ โ”‚         if (request.serverId !== "t3-code") {
2026-10-22T19:31:22.9809379Z  181 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-22T19:31:22.9809615Z  182 โ”‚ โ”‚             new AcpMcpOverAcpError(`Unknown ACP MCP server "${request.serverId}".`),
2026-10-22T19:31:22.9809705Z  183 โ”‚ โ”‚           );
2026-10-22T19:31:22.9809789Z  184 โ”‚ โ”‚         }
2026-10-22T19:31:22.9809925Z  185 โ”‚ โ”‚         if (connections.size >= MAX_CONNECTIONS) {
2026-10-22T19:31:22.9810147Z  186 โ”‚ โ”‚           return yield* Effect.fail(new AcpMcpOverAcpError("Too many MCP-over-ACP connections."));
2026-10-22T19:31:22.9810232Z  187 โ”‚ โ”‚         }
2026-10-22T19:31:22.9810401Z  188 โ”‚ โ”‚         const connectionId = yield* options.allocateConnectionId;
2026-10-22T19:31:22.9810526Z  189 โ”‚ โ”‚         connections.set(connectionId, {
2026-10-22T19:31:22.9810659Z  190 โ”‚ โ”‚           mutex: yield* Semaphore.make(1),
2026-10-22T19:31:22.9810769Z  191 โ”‚ โ”‚           sessionId: null,
2026-10-22T19:31:22.9810884Z  192 โ”‚ โ”‚           protocolVersion: null,
2026-10-22T19:31:22.9810993Z  193 โ”‚ โ”‚           nextRequestId: 0,
2026-10-22T19:31:22.9811074Z  194 โ”‚ โ”‚         });
2026-10-22T19:31:22.9811186Z  195 โ”‚ โ”‚         return { connectionId };
2026-10-22T19:31:22.9811272Z  196 โ”‚ โ”‚       }),
2026-10-22T19:31:22.9811458Z  197 โ”‚ โ”‚       message: Effect.fn("mcpOverAcpBridge.message")(function* (request) {
2026-10-22T19:31:22.9811629Z  198 โ”‚ โ”‚         const connection = yield* connectionFor(request.connectionId);
2026-10-22T19:31:22.9811763Z  199 โ”‚ โ”‚         const id = ++connection.nextRequestId;
2026-10-22T19:31:22.9811908Z  200 โ”‚ โ”‚         const payloads = yield* send(connection, {
2026-10-22T19:31:22.9812019Z  201 โ”‚ โ”‚           jsonrpc: "2.0",
2026-10-22T19:31:22.9812106Z  202 โ”‚ โ”‚           id,
2026-10-22T19:31:22.9812220Z  203 โ”‚ โ”‚           method: request.method,
2026-10-22T19:31:22.9812392Z  204 โ”‚ โ”‚           ...(request.params == null ? {} : { params: request.params }),
2026-10-22T19:31:22.9812478Z  205 โ”‚ โ”‚         });
2026-10-22T19:31:22.9812678Z  206 โ”‚ โ”‚         const response = payloads.find((payload) => asEnvelope(payload)?.id === id);
2026-10-22T19:31:22.9812811Z  207 โ”‚ โ”‚         const envelope = asEnvelope(response);
2026-10-22T19:31:22.9812923Z  208 โ”‚ โ”‚         if (envelope === null) {
2026-10-22T19:31:22.9813250Z  209 โ”‚ โ”‚           return yield* Effect.fail(
2026-10-22T19:31:22.9813484Z  210 โ”‚ โ”‚             new AcpMcpOverAcpError("MCP server did not return a matching response."),
2026-10-22T19:31:22.9813571Z  211 โ”‚ โ”‚           );
2026-10-22T19:31:22.9813654Z  212 โ”‚ โ”‚         }
2026-10-22T19:31:22.9813780Z  213 โ”‚ โ”‚         if (envelope.error !== undefined) {
2026-10-22T19:31:22.9813985Z  214 โ”‚ โ”‚           return yield* Effect.fail(new AcpMcpOverAcpError(errorMessage(envelope.error)));
2026-10-22T19:31:22.9814072Z  215 โ”‚ โ”‚         }
2026-10-22T19:31:22.9814258Z  216 โ”‚ โ”‚         return (envelope.result ?? null) as AcpSchema.MessageMcpResponse;
2026-10-22T19:31:22.9814341Z  217 โ”‚ โ”‚       }),
2026-10-22T19:31:22.9814605Z  218 โ”‚ โ”‚       notification: Effect.fn("mcpOverAcpBridge.notification")(function* (request) {
2026-10-22T19:31:22.9814811Z  219 โ”‚ โ”‚         const connection = yield* connectionFor(request.connectionId);
2026-10-22T19:31:22.9814924Z  220 โ”‚ โ”‚         yield* send(connection, {
2026-10-22T19:31:22.9815031Z  221 โ”‚ โ”‚           jsonrpc: "2.0",
2026-10-22T19:31:22.9815142Z  222 โ”‚ โ”‚           method: request.method,
2026-10-22T19:31:22.9815310Z  223 โ”‚ โ”‚           ...(request.params == null ? {} : { params: request.params }),
2026-10-22T19:31:22.9815401Z  224 โ”‚ โ”‚         });
2026-10-22T19:31:22.9815483Z  225 โ”‚ โ”‚       }),
2026-10-22T19:31:22.9815577Z  226 โ”‚ โ”‚       disconnect,
2026-10-22T19:31:22.9815697Z  227 โ”‚ โ”‚       dispose: Effect.suspend(() =>
2026-10-22T19:31:22.9815809Z  228 โ”‚ โ”‚         Effect.forEach(
2026-10-22T19:31:22.9815927Z  229 โ”‚ โ”‚           [...connections.keys()],
2026-10-22T19:31:22.9816111Z  230 โ”‚ โ”‚           (connectionId) => disconnect({ connectionId }).pipe(Effect.ignore),
2026-10-22T19:31:22.9816223Z  231 โ”‚ โ”‚           { discard: true },
2026-10-22T19:31:22.9816310Z  232 โ”‚ โ”‚         ),
2026-10-22T19:31:22.9816392Z  233 โ”‚ โ”‚       ),
2026-10-22T19:31:22.9816475Z  234 โ”‚ โ”‚     };
2026-10-22T19:31:22.9816610Z  235 โ”‚ โ•ฐโ”€โ–ถ });
2026-10-22T19:31:22.9816675Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9816950Z   help: Add a `yield` expression inside the generator body, or convert it to a regular function if iteration behavior is not needed.
2026-10-22T19:31:22.9816953Z
2026-10-22T19:31:22.9817187Z   โš  eslint(no-unused-vars): Function 'summarizePayload' is declared but never used.
2026-10-22T19:31:22.9817338Z     โ•ญโ”€[packages/provider-acp/src/server/nativeLogging.ts:22:10]
2026-10-22T19:31:22.9817400Z  21 โ”‚
2026-10-22T19:31:22.9817569Z  22 โ”‚ function summarizePayload(payload: unknown): Readonly<Record<string, unknown>> {
2026-10-22T19:31:22.9817675Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9817839Z     ยท                  โ•ฐโ”€โ”€ 'summarizePayload' is declared here
2026-10-22T19:31:22.9817955Z  23 โ”‚   if (payload === null) return { valueType: "null" };
2026-10-22T19:31:22.9818020Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9818139Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9818142Z
2026-10-22T19:31:22.9818475Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9818707Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:7]
2026-10-22T19:31:22.9818772Z  330 โ”‚   };
2026-10-22T19:31:22.9818847Z  331 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9818923Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9819071Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9819179Z  332 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-22T19:31:22.9819286Z  333 โ”‚       requestedSection.current = "overview";
2026-10-22T19:31:22.9819466Z  334 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-22T19:31:22.9819550Z  335 โ”‚       setSection("overview");
2026-10-22T19:31:22.9819639Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9819831Z      ยท            โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9819894Z  336 โ”‚     }
2026-10-22T19:31:22.9819953Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9820594Z   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-22T19:31:22.9820943Z   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-22T19:31:22.9820946Z
2026-10-22T19:31:22.9821165Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-22T19:31:22.9821352Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:337:6]
2026-10-22T19:31:22.9821463Z  332 โ”‚     if (!guidesEnabled && section === "guide") {
2026-10-22T19:31:22.9821570Z  333 โ”‚       requestedSection.current = "overview";
2026-10-22T19:31:22.9821662Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9822138Z      ยท               โ•ฐโ”€โ”€ 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-22T19:31:22.9822313Z  334 โ”‚       currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-22T19:31:22.9822481Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€           โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9823027Z      ยท                โ”‚                          โ•ฐโ”€โ”€ 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-22T19:31:22.9823530Z      ยท                โ•ฐโ”€โ”€ 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-22T19:31:22.9823610Z  335 โ”‚       setSection("overview");
2026-10-22T19:31:22.9823679Z  336 โ”‚     }
2026-10-22T19:31:22.9823795Z  337 โ”‚   }, [guidesEnabled, section, insets.top]);
2026-10-22T19:31:22.9823927Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9824202Z      ยท                        โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9824331Z  338 โ”‚   const tabContent = activityContent;
2026-10-22T19:31:22.9824394Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9824651Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-22T19:31:22.9824988Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9824994Z
2026-10-22T19:31:22.9825211Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-22T19:31:22.9825398Z      โ•ญโ”€[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:873:6]
2026-10-22T19:31:22.9825462Z  856 โ”‚     if (
2026-10-22T19:31:22.9825590Z  857 โ”‚       lastSelection.current.path === route.params.path &&
2026-10-22T19:31:22.9825680Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9826150Z      ยท             โ•ฐโ”€โ”€ 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-22T19:31:22.9826287Z  858 โ”‚       lastSelection.current.id === route.params.fileSelectionId
2026-10-22T19:31:22.9826348Z  859 โ”‚     )
2026-10-22T19:31:22.9826412Z  860 โ”‚       return;
2026-10-22T19:31:22.9826605Z  861 โ”‚     lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-22T19:31:22.9826752Z  862 โ”‚     if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-22T19:31:22.9826848Z  863 โ”‚     setJumpPath(route.params.path);
2026-10-22T19:31:22.9826927Z  864 โ”‚     setSelectedRowId(null);
2026-10-22T19:31:22.9827015Z  865 โ”‚     jumpStarted.current = false;
2026-10-22T19:31:22.9827180Z  866 โ”‚     const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-22T19:31:22.9827286Z  867 โ”‚     if (!file || !nativeView.current) return;
2026-10-22T19:31:22.9827382Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9827855Z      ยท                        โ•ฐโ”€โ”€ 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-22T19:31:22.9827992Z  868 โ”‚     setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-22T19:31:22.9828079Z  869 โ”‚     jumpStarted.current = true;
2026-10-22T19:31:22.9828279Z  870 โ”‚     void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-22T19:31:22.9828374Z  871 โ”‚       jumpStarted.current = false;
2026-10-22T19:31:22.9828445Z  872 โ”‚     });
2026-10-22T19:31:22.9828660Z  873 โ”‚   }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-22T19:31:22.9828880Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9829120Z      ยท                                                    โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9829240Z  874 โ”‚   const appliedFilter = useRef(filter.hideTestFiles);
2026-10-22T19:31:22.9829302Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9829714Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-22T19:31:22.9830052Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9830159Z
2026-10-22T19:31:22.9830718Z   โš  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-22T19:31:22.9830866Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:131:9]
2026-10-22T19:31:22.9830939Z  130 โ”‚           ) {
2026-10-22T19:31:22.9831169Z  131 โ”‚ โ•ญโ”€โ–ถ         for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:22.9831303Z  132 โ”‚ โ”‚             if (subscriptions.length >= count) {
2026-10-22T19:31:22.9831406Z  133 โ”‚ โ”‚               return;
2026-10-22T19:31:22.9831497Z  134 โ”‚ โ”‚             }
2026-10-22T19:31:22.9831621Z  135 โ”‚ โ”‚             yield* Effect.yieldNow;
2026-10-22T19:31:22.9831764Z  136 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-22T19:31:22.9831944Z  137 โ”‚             return yield* Effect.die(new Error(`Expected ${count} durable subscriptions.`));
2026-10-22T19:31:22.9832001Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9832004Z
2026-10-22T19:31:22.9832503Z   โš  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-22T19:31:22.9832644Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:252:7]
2026-10-22T19:31:22.9832821Z  251 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(firstClient)));
2026-10-22T19:31:22.9833105Z  252 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 1; attempt += 1) {
2026-10-22T19:31:22.9833224Z  253 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9833368Z  254 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9833500Z  255 โ”‚           yield* SubscriptionRef.set(activeSession, Option.none());
2026-10-22T19:31:22.9833560Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9833562Z
2026-10-22T19:31:22.9834061Z   โš  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-22T19:31:22.9834211Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-22T19:31:22.9834269Z  257 โ”‚
2026-10-22T19:31:22.9834596Z  258 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-22T19:31:22.9834734Z  259 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9834877Z  260 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9834987Z  261 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-22T19:31:22.9835055Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9835058Z
2026-10-22T19:31:22.9835552Z   โš  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-22T19:31:22.9835700Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-22T19:31:22.9835824Z  321 โ”‚           );
2026-10-22T19:31:22.9836137Z  322 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-22T19:31:22.9836252Z  323 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9836393Z  324 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9836459Z  325 โ”‚
2026-10-22T19:31:22.9836513Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9836516Z
2026-10-22T19:31:22.9837010Z   โš  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-22T19:31:22.9837151Z      โ•ญโ”€[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-22T19:31:22.9837334Z  329 โ”‚           yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-22T19:31:22.9837599Z  330 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-22T19:31:22.9837708Z  331 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9837847Z  332 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9837960Z  333 โ”‚           yield* Fiber.interrupt(subscriptionFiber);
2026-10-22T19:31:22.9838020Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9838022Z
2026-10-22T19:31:22.9838510Z   โš  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-22T19:31:22.9838664Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:226:3]
2026-10-22T19:31:22.9838732Z  225 โ”‚     ) {
2026-10-22T19:31:22.9838946Z  226 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:22.9839062Z  227 โ”‚ โ”‚       const socket = sockets[index];
2026-10-22T19:31:22.9839160Z  228 โ”‚ โ”‚       if (socket) {
2026-10-22T19:31:22.9839263Z  229 โ”‚ โ”‚         return socket;
2026-10-22T19:31:22.9839346Z  230 โ”‚ โ”‚       }
2026-10-22T19:31:22.9839452Z  231 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-22T19:31:22.9839588Z  232 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-22T19:31:22.9839845Z  233 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to create a websocket."));
2026-10-22T19:31:22.9839940Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9839943Z
2026-10-22T19:31:22.9840588Z   โš  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-22T19:31:22.9840732Z      โ•ญโ”€[packages/client-runtime/src/rpc/session.test.ts:240:3]
2026-10-22T19:31:22.9840795Z  239 โ”‚     ) {
2026-10-22T19:31:22.9841008Z  240 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:22.9841237Z  241 โ”‚ โ”‚       const request = socket.sent.map((message) => decodeJson(message)).filter(isRpcRequest)[index];
2026-10-22T19:31:22.9841335Z  242 โ”‚ โ”‚       if (request) {
2026-10-22T19:31:22.9841444Z  243 โ”‚ โ”‚         return request;
2026-10-22T19:31:22.9841528Z  244 โ”‚ โ”‚       }
2026-10-22T19:31:22.9841640Z  245 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-22T19:31:22.9841770Z  246 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-22T19:31:22.9841947Z  247 โ”‚       return yield* Effect.die(new Error("Expected the RPC protocol to send a request."));
2026-10-22T19:31:22.9842006Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9842009Z
2026-10-22T19:31:22.9842237Z   โš  eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-22T19:31:22.9842371Z     โ•ญโ”€[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-22T19:31:22.9842430Z  78 โ”‚
2026-10-22T19:31:22.9842577Z  79 โ”‚ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-22T19:31:22.9842683Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9842845Z     ยท                  โ•ฐโ”€โ”€ 'describeSchedule' is declared here
2026-10-22T19:31:22.9842963Z  80 โ”‚   if (schedule.type === "webhook") return "On webhook";
2026-10-22T19:31:22.9843024Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9843143Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9843145Z
2026-10-22T19:31:22.9843349Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-22T19:31:22.9843492Z      โ•ญโ”€[packages/client-runtime/src/state/shell.ts:189:5]
2026-10-22T19:31:22.9843609Z  186 โ”‚     let waiting = yield* Ref.get(awaitingCompletion);
2026-10-22T19:31:22.9843686Z  187 โ”‚     let next = initial;
2026-10-22T19:31:22.9843762Z      ยท         โ”€โ”€โ”ฌโ”€
2026-10-22T19:31:22.9843900Z      ยท           โ•ฐโ”€โ”€ From this accumulator
2026-10-22T19:31:22.9843995Z  188 โ”‚     let receivedSnapshot = false;
2026-10-22T19:31:22.9844081Z  189 โ”‚     for (const item of items) {
2026-10-22T19:31:22.9844154Z      ยท     โ”€โ”ฌโ”€
2026-10-22T19:31:22.9844270Z      ยท      โ•ฐโ”€โ”€ For this loop
2026-10-22T19:31:22.9844368Z  190 โ”‚       if (item.kind === "synchronized") {
2026-10-22T19:31:22.9844443Z  191 โ”‚         waiting = false;
2026-10-22T19:31:22.9844577Z  192 โ”‚         if (Option.isSome(next.snapshot)) {
2026-10-22T19:31:22.9844728Z  193 โ”‚           next = { ...next, status: "live", error: Option.none() };
2026-10-22T19:31:22.9844824Z      ยท                    โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:22.9844963Z      ยท                       โ•ฐโ”€โ”€ From this spread
2026-10-22T19:31:22.9845025Z  194 โ”‚         }
2026-10-22T19:31:22.9845081Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9845312Z   help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-22T19:31:22.9845530Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-22T19:31:22.9845532Z
2026-10-22T19:31:22.9846025Z   โš  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-22T19:31:22.9846222Z      โ•ญโ”€[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-22T19:31:22.9846305Z  520 โ”‚                 })).delivery;
2026-10-22T19:31:22.9846521Z  521 โ”‚ โ•ญโ”€โ–ถ             while (delivery.outcome === "accepted") {
2026-10-22T19:31:22.9846651Z  522 โ”‚ โ”‚                 yield* Effect.yieldNow;
2026-10-22T19:31:22.9846810Z  523 โ”‚ โ”‚                 delivery = (yield* service.getWebhookDelivery({
2026-10-22T19:31:22.9846921Z  524 โ”‚ โ”‚                   id: task.id,
2026-10-22T19:31:22.9847049Z  525 โ”‚ โ”‚                   deliveryId: deliveryId!,
2026-10-22T19:31:22.9847157Z  526 โ”‚ โ”‚                 })).delivery;
2026-10-22T19:31:22.9847299Z  527 โ”‚ โ•ฐโ”€โ–ถ             }
2026-10-22T19:31:22.9847426Z  528 โ”‚                 assert.equal(delivery.outcome, "dispatch_failed");
2026-10-22T19:31:22.9847485Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9847487Z
2026-10-22T19:31:22.9847739Z   โš  eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-22T19:31:22.9847871Z     โ•ญโ”€[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-22T19:31:22.9847934Z  11 โ”‚
2026-10-22T19:31:22.9848041Z  12 โ”‚ function resolveThreadWorkspaceCwd(input: {
2026-10-22T19:31:22.9848154Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9848335Z     ยท                      โ•ฐโ”€โ”€ 'resolveThreadWorkspaceCwd' is declared here
2026-10-22T19:31:22.9848409Z  13 โ”‚   readonly thread: {
2026-10-22T19:31:22.9848466Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9848582Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9848585Z
2026-10-22T19:31:22.9848777Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-22T19:31:22.9848954Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-22T19:31:22.9849076Z   99 โ”‚   const startEditor = startScheduledTaskEditor;
2026-10-22T19:31:22.9849281Z  100 โ”‚   const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-22T19:31:22.9849435Z      ยท                                                                                     โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9849671Z      ยท                                                                                          โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-22T19:31:22.9849764Z  101 โ”‚   const readEditor = useCallback(
2026-10-22T19:31:22.9849823Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9850164Z   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-22T19:31:22.9850553Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9850601Z
2026-10-22T19:31:22.9850804Z   โš  react(memo-dependencies): Found extra memoization dependencies
2026-10-22T19:31:22.9850977Z      โ•ญโ”€[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-22T19:31:22.9851048Z  120 โ”‚       setEditor,
2026-10-22T19:31:22.9851136Z  121 โ”‚       startEditor,
2026-10-22T19:31:22.9851230Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9851391Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `startEditor`
2026-10-22T19:31:22.9851462Z  122 โ”‚       hasChanges,
2026-10-22T19:31:22.9851515Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9851853Z   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-22T19:31:22.9852193Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9852199Z
2026-10-22T19:31:22.9852469Z   โš  eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-22T19:31:22.9852593Z     โ•ญโ”€[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-22T19:31:22.9852647Z  55 โ”‚
2026-10-22T19:31:22.9852755Z  56 โ”‚ function normalizeTerminalContextSelection(
2026-10-22T19:31:22.9852877Z     ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9853083Z     ยท                          โ•ฐโ”€โ”€ 'normalizeTerminalContextSelection' is declared here
2026-10-22T19:31:22.9853176Z  57 โ”‚   selection: TerminalContextSelection,
2026-10-22T19:31:22.9853234Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9853355Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9853362Z
2026-10-22T19:31:22.9853859Z   โš  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-22T19:31:22.9854018Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-22T19:31:22.9854102Z  168 โ”‚           });
2026-10-22T19:31:22.9854316Z  169 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-22T19:31:22.9854560Z  170 โ”‚ โ”‚           if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-22T19:31:22.9854719Z  171 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9854863Z  172 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9854929Z  173 โ”‚
2026-10-22T19:31:22.9854987Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9854990Z
2026-10-22T19:31:22.9855482Z   โš  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-22T19:31:22.9855638Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-22T19:31:22.9855762Z  177 โ”‚           yield* Deferred.succeed(releaseSave, undefined);
2026-10-22T19:31:22.9855971Z  178 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-22T19:31:22.9856180Z  179 โ”‚ โ”‚           if ((yield* Ref.get(saved)).length > 0) break;
2026-10-22T19:31:22.9856327Z  180 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9856467Z  181 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9856526Z  182 โ”‚
2026-10-22T19:31:22.9856582Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9856585Z
2026-10-22T19:31:22.9857073Z   โš  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-22T19:31:22.9857232Z      โ•ญโ”€[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-22T19:31:22.9857373Z  306 โ”‚           yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-22T19:31:22.9857589Z  307 โ”‚ โ•ญโ”€โ–ถ       for (let index = 0; index < 100; index += 1) {
2026-10-22T19:31:22.9857738Z  308 โ”‚ โ”‚           const values = yield* Ref.get(saved);
2026-10-22T19:31:22.9857942Z  309 โ”‚ โ”‚           if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-22T19:31:22.9858039Z  310 โ”‚ โ”‚             break;
2026-10-22T19:31:22.9858130Z  311 โ”‚ โ”‚           }
2026-10-22T19:31:22.9858248Z  312 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9858387Z  313 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9858454Z  314 โ”‚
2026-10-22T19:31:22.9858513Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9858516Z
2026-10-22T19:31:22.9858744Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-22T19:31:22.9858885Z    โ•ญโ”€[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-22T19:31:22.9858972Z  2 โ”‚   AuthDiagnosticsReadScope,
2026-10-22T19:31:22.9859051Z  3 โ”‚   type AuthSessionState,
2026-10-22T19:31:22.9859147Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9859309Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-22T19:31:22.9859389Z  4 โ”‚   sessionGrantsScope,
2026-10-22T19:31:22.9859449Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9859560Z   help: Consider removing this import.
2026-10-22T19:31:22.9859562Z
2026-10-22T19:31:22.9860058Z   โš  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-22T19:31:22.9860230Z       โ•ญโ”€[packages/client-runtime/src/state/threads-sync.test.ts:1228:7]
2026-10-22T19:31:22.9860335Z  1227 โ”‚           yield* harness.replaceSession;
2026-10-22T19:31:22.9860561Z  1228 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:22.9860730Z  1229 โ”‚ โ”‚           if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-22T19:31:22.9860824Z  1230 โ”‚ โ”‚             break;
2026-10-22T19:31:22.9860913Z  1231 โ”‚ โ”‚           }
2026-10-22T19:31:22.9861027Z  1232 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9861173Z  1233 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9861253Z  1234 โ”‚           yield* Queue.offer(
2026-10-22T19:31:22.9861377Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9861434Z
2026-10-22T19:31:22.9861924Z   โš  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-22T19:31:22.9862089Z       โ•ญโ”€[packages/client-runtime/src/state/threads-sync.test.ts:1337:7]
2026-10-22T19:31:22.9862185Z  1336 โ”‚           yield* harness.replaceSession;
2026-10-22T19:31:22.9862406Z  1337 โ”‚ โ•ญโ”€โ–ถ       for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:22.9862582Z  1338 โ”‚ โ”‚           if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-22T19:31:22.9862696Z  1339 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:22.9862845Z  1340 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:22.9862990Z  1341 โ”‚           expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-22T19:31:22.9863050Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9863053Z
2026-10-22T19:31:22.9863263Z   โš  eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-22T19:31:22.9863408Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-22T19:31:22.9863532Z  3 โ”‚ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-22T19:31:22.9863622Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-22T19:31:22.9863703Z    ยท             โ”€โ”ฌโ”€
2026-10-22T19:31:22.9863840Z    ยท              โ•ฐโ”€โ”€ 'Arr' is imported here
2026-10-22T19:31:22.9863928Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-22T19:31:22.9863990Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9864106Z   help: Consider removing this import.
2026-10-22T19:31:22.9864111Z
2026-10-22T19:31:22.9864320Z   โš  eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-22T19:31:22.9864457Z    โ•ญโ”€[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-22T19:31:22.9864563Z  4 โ”‚ import * as Arr from "effect/Array";
2026-10-22T19:31:22.9864685Z  5 โ”‚ import * as Order from "effect/Order";
2026-10-22T19:31:22.9864766Z    ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9864904Z    ยท               โ•ฐโ”€โ”€ 'Order' is imported here
2026-10-22T19:31:22.9864962Z  6 โ”‚
2026-10-22T19:31:22.9865018Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9865123Z   help: Consider removing this import.
2026-10-22T19:31:22.9865129Z
2026-10-22T19:31:22.9865315Z   โš  eslint(no-control-regex): Unexpected control character
2026-10-22T19:31:22.9865530Z      โ•ญโ”€[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-22T19:31:22.9865683Z  219 โ”‚               <Text selectable className="font-mono text-sm text-foreground">
2026-10-22T19:31:22.9865837Z  220 โ”‚                 {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-22T19:31:22.9865952Z      ยท                                              โ”€โ”€โ”ฌโ”€
2026-10-22T19:31:22.9866136Z      ยท                                                โ•ฐโ”€โ”€ 'U+001B' is a control character.
2026-10-22T19:31:22.9866207Z  221 โ”‚               </Text>
2026-10-22T19:31:22.9866266Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9866516Z   help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-22T19:31:22.9866518Z
2026-10-22T19:31:22.9866858Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:22.9867037Z      โ•ญโ”€[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-22T19:31:22.9867102Z  407 โ”‚
2026-10-22T19:31:22.9867186Z  408 โ”‚ const layer: Layer.Layer<
2026-10-22T19:31:22.9867266Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9867404Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-22T19:31:22.9867511Z  409 โ”‚   ProviderAdapter.ProviderAdapterV2,
2026-10-22T19:31:22.9867564Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9867681Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9867684Z
2026-10-22T19:31:22.9867968Z   โš  eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-22T19:31:22.9868139Z       โ•ญโ”€[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-22T19:31:22.9868199Z  1619 โ”‚
2026-10-22T19:31:22.9868426Z  1620 โ”‚ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-22T19:31:22.9868557Z       ยท          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9868777Z       ยท                            โ•ฐโ”€โ”€ 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-22T19:31:22.9868865Z  1621 โ”‚   const meta = response._meta;
2026-10-22T19:31:22.9868920Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9869035Z   help: Consider removing this declaration.
2026-10-22T19:31:22.9869038Z
2026-10-22T19:31:22.9869266Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-22T19:31:22.9869520Z     โ•ญโ”€[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-22T19:31:22.9869603Z  89 โ”‚   let cursor = prompt.length;
2026-10-22T19:31:22.9869721Z  90 โ”‚   for (const occurrence of occurrences.reverse()) {
2026-10-22T19:31:22.9869833Z     ยท                                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9869928Z  91 โ”‚     let { start, end } = occurrence;
2026-10-22T19:31:22.9869981Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9870262Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-22T19:31:22.9870265Z
2026-10-22T19:31:22.9870482Z   โš  eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-22T19:31:22.9870624Z    โ•ญโ”€[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-22T19:31:22.9870924Z  2 โ”‚   AuthFilesystemReadScope,
2026-10-22T19:31:22.9871041Z  3 โ”‚   type AuthSessionState,
2026-10-22T19:31:22.9871133Z    ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9871301Z    ยท                โ•ฐโ”€โ”€ 'AuthSessionState' is imported here
2026-10-22T19:31:22.9871380Z  4 โ”‚   type FilesystemBrowseEntry,
2026-10-22T19:31:22.9871439Z    โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9871547Z   help: Consider removing this import.
2026-10-22T19:31:22.9871550Z
2026-10-22T19:31:22.9871824Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9871979Z     โ•ญโ”€[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-22T19:31:22.9872044Z  61 โ”‚   }, []);
2026-10-22T19:31:22.9872119Z  62 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9872205Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9872344Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9872509Z  63 โ”‚     if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-22T19:31:22.9872644Z     ยท                                                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9872877Z     ยท                                                              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9872961Z  64 โ”‚   }, [playbackUrl, resolvedUrl]);
2026-10-22T19:31:22.9873018Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9873670Z   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-22T19:31:22.9874018Z   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-22T19:31:22.9874021Z
2026-10-22T19:31:22.9874239Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9874375Z     โ•ญโ”€[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-22T19:31:22.9874441Z  81 โ”‚     },
2026-10-22T19:31:22.9874509Z  82 โ”‚     [draftKey],
2026-10-22T19:31:22.9874669Z     ยท      โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:22.9874815Z     ยท          โ•ฐโ”€โ”€ Unnecessary dependency `draftKey`
2026-10-22T19:31:22.9874876Z  83 โ”‚   );
2026-10-22T19:31:22.9874934Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9875255Z   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-22T19:31:22.9875587Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9875594Z
2026-10-22T19:31:22.9875793Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-22T19:31:22.9875911Z      โ•ญโ”€[packages/shared/src/qrCode.ts:458:44]
2026-10-22T19:31:22.9875985Z  457 โ”‚   ): Array<byte> {
2026-10-22T19:31:22.9876105Z  458 โ”‚     let result: Array<byte> = divisor.map((_) => 0);
2026-10-22T19:31:22.9876212Z      ยท                                            โ”ฌ
2026-10-22T19:31:22.9876432Z      ยท                                            โ•ฐโ”€โ”€ '_' is declared here
2026-10-22T19:31:22.9876552Z  459 โ”‚     for (const b of data) {
2026-10-22T19:31:22.9876611Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9876724Z   help: Consider removing this parameter.
2026-10-22T19:31:22.9876727Z
2026-10-22T19:31:22.9876887Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9877018Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:184:9]
2026-10-22T19:31:22.9877092Z  183 โ”‚         "options",
2026-10-22T19:31:22.9877191Z  184 โ”‚         latestOptionFunctionsRef.current,
2026-10-22T19:31:22.9877312Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9877523Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9877627Z  185 โ”‚         optionFunctionWrappersRef.current,
2026-10-22T19:31:22.9877689Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9878198Z   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-22T19:31:22.9878511Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9878513Z
2026-10-22T19:31:22.9878669Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9878792Z      โ•ญโ”€[apps/mobile/src/native/StackHeader.tsx:185:9]
2026-10-22T19:31:22.9878894Z  184 โ”‚         latestOptionFunctionsRef.current,
2026-10-22T19:31:22.9878994Z  185 โ”‚         optionFunctionWrappersRef.current,
2026-10-22T19:31:22.9879120Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9879332Z      ยท                         โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9879431Z  186 โ”‚       ) as NativeStackNavigationOptions)
2026-10-22T19:31:22.9879488Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9879989Z   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-22T19:31:22.9880301Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9880304Z
2026-10-22T19:31:22.9880499Z   โš  unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-22T19:31:22.9880635Z      โ•ญโ”€[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-22T19:31:22.9880770Z  193 โ”‚     const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-22T19:31:22.9880870Z  194 โ”‚     const codes = new Array<number>(count);
2026-10-22T19:31:22.9880984Z      ยท                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9881099Z  195 โ”‚     for (let index = 0; index < count; index += 1) {
2026-10-22T19:31:22.9881158Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9881610Z   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-22T19:31:22.9881612Z
2026-10-22T19:31:22.9881903Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:22.9882062Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:346:9]
2026-10-22T19:31:22.9882177Z  345 โ”‚       const entry: ProjectSettingsOverrides = {
2026-10-22T19:31:22.9882323Z  346 โ”‚         ...(entries.get(projectId) ?? currentEntries[projectId] ?? {}),
2026-10-22T19:31:22.9882487Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9882550Z  347 โ”‚       };
2026-10-22T19:31:22.9882609Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9882897Z   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-22T19:31:22.9882900Z
2026-10-22T19:31:22.9883138Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in Array.prototype.reduce()
2026-10-22T19:31:22.9883270Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:448:24]
2026-10-22T19:31:22.9883352Z  447 โ”‚   const favorites =
2026-10-22T19:31:22.9883483Z  448 โ”‚     setModelFavorites?.reduce((current, change) => {
2026-10-22T19:31:22.9883587Z      ยท                        โ”€โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9883724Z      ยท                           โ•ฐโ”€โ”€ For this reduce
2026-10-22T19:31:22.9883817Z  449 โ”‚       const exists = current.some(
2026-10-22T19:31:22.9884009Z  450 โ”‚         (favorite) => favorite.provider === change.provider && favorite.model === change.model,
2026-10-22T19:31:22.9884073Z  451 โ”‚       );
2026-10-22T19:31:22.9884151Z  452 โ”‚       return change.favorite
2026-10-22T19:31:22.9884222Z  453 โ”‚         ? exists
2026-10-22T19:31:22.9884294Z  454 โ”‚           ? current
2026-10-22T19:31:22.9884439Z  455 โ”‚           : [...current, { provider: change.provider, model: change.model }]
2026-10-22T19:31:22.9884555Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9884728Z      ยท                   โ•ฐโ”€โ”€ From this spread
2026-10-22T19:31:22.9884805Z  456 โ”‚         : current.filter(
2026-10-22T19:31:22.9884867Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9885089Z   help: Consider using `Object.assign()` or `Array.prototype.push()` to mutate the accumulator instead.
2026-10-22T19:31:22.9885262Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-22T19:31:22.9885264Z
2026-10-22T19:31:22.9885470Z   โš  oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-22T19:31:22.9885605Z      โ•ญโ”€[packages/shared/src/serverSettings.ts:466:3]
2026-10-22T19:31:22.9885669Z  464 โ”‚     null;
2026-10-22T19:31:22.9885800Z  465 โ”‚   let nextModelPreferences = initialModelPreferences;
2026-10-22T19:31:22.9885906Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9886049Z      ยท                 โ•ฐโ”€โ”€ From this accumulator
2026-10-22T19:31:22.9886156Z  466 โ”‚   for (const change of setModelsHidden ?? []) {
2026-10-22T19:31:22.9886231Z      ยท   โ”€โ”ฌโ”€
2026-10-22T19:31:22.9886346Z      ยท    โ•ฐโ”€โ”€ For this loop
2026-10-22T19:31:22.9886492Z  467 โ”‚     const preferences = nextModelPreferences?.[change.provider] ?? {
2026-10-22T19:31:22.9886566Z  468 โ”‚       hiddenModels: [],
2026-10-22T19:31:22.9886641Z  469 โ”‚       modelOrder: [],
2026-10-22T19:31:22.9886706Z  470 โ”‚     };
2026-10-22T19:31:22.9886899Z  471 โ”‚     const hiddenModels = preferences.hiddenModels.filter((model) => model !== change.model);
2026-10-22T19:31:22.9887014Z  472 โ”‚     if (change.hidden) hiddenModels.push(change.model);
2026-10-22T19:31:22.9887164Z  473 โ”‚     nextModelPreferences = {
2026-10-22T19:31:22.9887295Z  474 โ”‚       ...nextModelPreferences,
2026-10-22T19:31:22.9887413Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9887552Z      ยท                  โ•ฐโ”€โ”€ From this spread
2026-10-22T19:31:22.9887679Z  475 โ”‚       [change.provider]: { ...preferences, hiddenModels },
2026-10-22T19:31:22.9887738Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9887907Z   help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-22T19:31:22.9888071Z   note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-22T19:31:22.9888074Z
2026-10-22T19:31:22.9888299Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-22T19:31:22.9888452Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:229:6]
2026-10-22T19:31:22.9888631Z  225 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-22T19:31:22.9888730Z  226 โ”‚       nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9888830Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9889331Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9889415Z  227 โ”‚       mostRecentEventCount,
2026-10-22T19:31:22.9889480Z  228 โ”‚     );
2026-10-22T19:31:22.9889611Z  229 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-22T19:31:22.9889764Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9889988Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9890085Z  230 โ”‚   const assumedValue = props.value;
2026-10-22T19:31:22.9890139Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9890328Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-22T19:31:22.9890667Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9890669Z
2026-10-22T19:31:22.9890900Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-22T19:31:22.9891043Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:237:7]
2026-10-22T19:31:22.9891194Z  236 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-22T19:31:22.9891344Z  237 โ”‚       nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9891480Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9891969Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9892047Z  238 โ”‚       controlledEventCount,
2026-10-22T19:31:22.9892117Z  239 โ”‚       assumedValue,
2026-10-22T19:31:22.9892180Z  240 โ”‚     );
2026-10-22T19:31:22.9892348Z  241 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-22T19:31:22.9892496Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9892731Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-22T19:31:22.9892835Z  242 โ”‚   const acceptNativeEvent = useCallback(
2026-10-22T19:31:22.9892892Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9893341Z   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-22T19:31:22.9893678Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9893681Z
2026-10-22T19:31:22.9893838Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9893988Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-22T19:31:22.9894126Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9894247Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9894377Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9894620Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-22T19:31:22.9894701Z  163 โ”‚     });
2026-10-22T19:31:22.9894755Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9895261Z   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-22T19:31:22.9895582Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9895588Z
2026-10-22T19:31:22.9895743Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9895899Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-22T19:31:22.9896028Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9896152Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9896278Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9896503Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9896563Z  163 โ”‚     });
2026-10-22T19:31:22.9896622Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9897177Z   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-22T19:31:22.9897527Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9897529Z
2026-10-22T19:31:22.9897680Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9897829Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:23]
2026-10-22T19:31:22.9897895Z  163 โ”‚     });
2026-10-22T19:31:22.9897993Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-22T19:31:22.9898126Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:22.9898341Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-22T19:31:22.9898471Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-22T19:31:22.9898551Z  165 โ”‚     return JSON.stringify(
2026-10-22T19:31:22.9898608Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9899101Z   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-22T19:31:22.9899410Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9899412Z
2026-10-22T19:31:22.9899570Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9899720Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:206:5]
2026-10-22T19:31:22.9899799Z  205 โ”‚     mostRecentEventCount,
2026-10-22T19:31:22.9899895Z  206 โ”‚     nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9900013Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9900218Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9900279Z  207 โ”‚   );
2026-10-22T19:31:22.9900338Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9900841Z   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-22T19:31:22.9901155Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9901161Z
2026-10-22T19:31:22.9901318Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9901462Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:212:5]
2026-10-22T19:31:22.9901541Z  211 โ”‚     mostRecentEventCount,
2026-10-22T19:31:22.9901636Z  212 โ”‚     nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9901749Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9901949Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9902011Z  213 โ”‚   );
2026-10-22T19:31:22.9902069Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9902623Z   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-22T19:31:22.9902959Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9902965Z
2026-10-22T19:31:22.9903166Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-22T19:31:22.9903312Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:197:6]
2026-10-22T19:31:22.9903444Z  161 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9903572Z  162 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9903691Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9904196Z      ยท                                      โ•ฐโ”€โ”€ 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-22T19:31:22.9904261Z  163 โ”‚     });
2026-10-22T19:31:22.9904360Z  164 โ”‚     confirmedTokensRef.current = tokens;
2026-10-22T19:31:22.9904434Z  165 โ”‚     return JSON.stringify(
2026-10-22T19:31:22.9904742Z  166 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-22T19:31:22.9904822Z  167 โ”‚         const record =
2026-10-22T19:31:22.9904915Z  168 โ”‚           token.type === "context"
2026-10-22T19:31:22.9905088Z  169 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-22T19:31:22.9905164Z  170 โ”‚             : undefined;
2026-10-22T19:31:22.9905293Z  171 โ”‚         const presentation = contextChipPresentation(
2026-10-22T19:31:22.9905415Z  172 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-22T19:31:22.9905486Z  173 โ”‚           record,
2026-10-22T19:31:22.9905554Z  174 โ”‚         );
2026-10-22T19:31:22.9905650Z  175 โ”‚         const icon = contextChipIcon(
2026-10-22T19:31:22.9905729Z  176 โ”‚           presentation,
2026-10-22T19:31:22.9905879Z  177 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-22T19:31:22.9905951Z  178 โ”‚         );
2026-10-22T19:31:22.9906030Z  179 โ”‚         return {
2026-10-22T19:31:22.9906111Z  180 โ”‚           type: token.type,
2026-10-22T19:31:22.9906190Z  181 โ”‚           source: token.source,
2026-10-22T19:31:22.9906271Z  182 โ”‚           start: token.start,
2026-10-22T19:31:22.9906351Z  183 โ”‚           end: token.end,
2026-10-22T19:31:22.9906443Z  184 โ”‚           accent: presentation.accent,
2026-10-22T19:31:22.9906518Z  185 โ”‚           label:
2026-10-22T19:31:22.9906605Z  186 โ”‚             token.type === "skill"
2026-10-22T19:31:22.9906721Z  187 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-22T19:31:22.9906810Z  188 โ”‚               : token.type === "context"
2026-10-22T19:31:22.9907066Z  189 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-22T19:31:22.9907160Z  190 โ”‚                 : basename(token.value),
2026-10-22T19:31:22.9907315Z  191 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-22T19:31:22.9907418Z  192 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-22T19:31:22.9907511Z  193 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-22T19:31:22.9907576Z  194 โ”‚         };
2026-10-22T19:31:22.9907642Z  195 โ”‚       }),
2026-10-22T19:31:22.9907758Z  196 โ”‚     );
2026-10-22T19:31:22.9907907Z  197 โ”‚   }, [props.value, props.context, skillLabels]);
2026-10-22T19:31:22.9908039Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9908261Z      ยท                          โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9908414Z  198 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-22T19:31:22.9908470Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9908694Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-22T19:31:22.9909029Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9909032Z
2026-10-22T19:31:22.9909240Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-22T19:31:22.9909388Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.ios.tsx:259:5]
2026-10-22T19:31:22.9909595Z  251 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-22T19:31:22.9909706Z  252 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-22T19:31:22.9909807Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9910298Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9910401Z  253 โ”‚         eventCount: acknowledgedEventCount,
2026-10-22T19:31:22.9910471Z  254 โ”‚         value,
2026-10-22T19:31:22.9910565Z  255 โ”‚         selection: nextSelection,
2026-10-22T19:31:22.9910633Z  256 โ”‚       });
2026-10-22T19:31:22.9910735Z  257 โ”‚       return acknowledgedEventCount;
2026-10-22T19:31:22.9910797Z  258 โ”‚     },
2026-10-22T19:31:22.9910863Z  259 โ”‚     [],
2026-10-22T19:31:22.9910936Z      ยท     โ”€โ”ฌ
2026-10-22T19:31:22.9911136Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9911202Z  260 โ”‚   );
2026-10-22T19:31:22.9911262Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9911480Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-22T19:31:22.9911827Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9911830Z
2026-10-22T19:31:22.9912144Z   โš  eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-22T19:31:22.9912343Z     โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-22T19:31:22.9912498Z  16 โ”‚ import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-22T19:31:22.9912622Z  17 โ”‚ import { Image, Platform, StyleSheet } from "react-native";
2026-10-22T19:31:22.9912703Z     ยท          โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:22.9912846Z     ยท            โ•ฐโ”€โ”€ 'Image' is imported here
2026-10-22T19:31:22.9912908Z  18 โ”‚
2026-10-22T19:31:22.9912962Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9913071Z   help: Consider removing this import.
2026-10-22T19:31:22.9913074Z
2026-10-22T19:31:22.9913291Z   โš  react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-22T19:31:22.9913452Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:227:6]
2026-10-22T19:31:22.9913627Z  223 โ”‚     nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-22T19:31:22.9913728Z  224 โ”‚       nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9913827Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9914317Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9914399Z  225 โ”‚       mostRecentEventCount,
2026-10-22T19:31:22.9914461Z  226 โ”‚     );
2026-10-22T19:31:22.9914648Z  227 โ”‚   }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-22T19:31:22.9914796Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9915015Z      ยท                                โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9915113Z  228 โ”‚   const assumedValue = props.value;
2026-10-22T19:31:22.9915170Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9915354Z   help: Missing dependencies can cause an effect to fire less often than it should
2026-10-22T19:31:22.9915684Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9915691Z
2026-10-22T19:31:22.9915919Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-22T19:31:22.9916070Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:235:7]
2026-10-22T19:31:22.9916232Z  234 โ”‚     nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-22T19:31:22.9916333Z  235 โ”‚       nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9916430Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9916918Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9916998Z  236 โ”‚       controlledEventCount,
2026-10-22T19:31:22.9917072Z  237 โ”‚       assumedValue,
2026-10-22T19:31:22.9917130Z  238 โ”‚     );
2026-10-22T19:31:22.9917307Z  239 โ”‚   }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-22T19:31:22.9917457Z      ยท                                                         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9917754Z      ยท                                                                    โ•ฐโ”€โ”€ Unnecessary dependency `controlledDocumentJson`
2026-10-22T19:31:22.9917890Z  240 โ”‚   const acceptNativeEvent = useCallback(
2026-10-22T19:31:22.9917954Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9918406Z   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-22T19:31:22.9918741Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9918743Z
2026-10-22T19:31:22.9918901Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9919091Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-22T19:31:22.9919226Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9919348Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9919476Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9919653Z      ยท                                          โ•ฐโ”€โ”€ Cannot access ref value during render
2026-10-22T19:31:22.9919716Z  161 โ”‚     });
2026-10-22T19:31:22.9919775Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9920274Z   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-22T19:31:22.9920587Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9920597Z
2026-10-22T19:31:22.9920750Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9920910Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-22T19:31:22.9921043Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9921168Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9921290Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9921517Z      ยท                                          โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9921580Z  161 โ”‚     });
2026-10-22T19:31:22.9921639Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9922401Z   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-22T19:31:22.9922722Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9922724Z
2026-10-22T19:31:22.9922935Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9923091Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:23]
2026-10-22T19:31:22.9923153Z  161 โ”‚     });
2026-10-22T19:31:22.9923249Z  162 โ”‚     confirmedTokensRef.current = tokens;
2026-10-22T19:31:22.9923391Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:22.9923714Z      ยท              โ”‚            โ•ฐโ”€โ”€ Cannot update ref value during render
2026-10-22T19:31:22.9923888Z      ยท              โ•ฐโ”€โ”€ This value is a ref
2026-10-22T19:31:22.9923965Z  163 โ”‚     return JSON.stringify(
2026-10-22T19:31:22.9924026Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9924552Z   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-22T19:31:22.9924919Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9924922Z
2026-10-22T19:31:22.9925080Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9925238Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:204:5]
2026-10-22T19:31:22.9925320Z  203 โ”‚     mostRecentEventCount,
2026-10-22T19:31:22.9925417Z  204 โ”‚     nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9925529Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9925734Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9925808Z  205 โ”‚   );
2026-10-22T19:31:22.9925870Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9926368Z   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-22T19:31:22.9926678Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9926684Z
2026-10-22T19:31:22.9926840Z   โš  react(refs): Cannot access refs during render
2026-10-22T19:31:22.9926999Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:210:5]
2026-10-22T19:31:22.9927077Z  209 โ”‚     mostRecentEventCount,
2026-10-22T19:31:22.9927171Z  210 โ”‚     nativeEventSnapshotsRef.current,
2026-10-22T19:31:22.9927291Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9927495Z      ยท                    โ•ฐโ”€โ”€ Passing a ref to a function may read its value during render
2026-10-22T19:31:22.9927561Z  211 โ”‚   );
2026-10-22T19:31:22.9927616Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9928122Z   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-22T19:31:22.9928440Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-22T19:31:22.9928442Z
2026-10-22T19:31:22.9928648Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-22T19:31:22.9928800Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:195:6]
2026-10-22T19:31:22.9928928Z  159 โ”‚     const tokens = collectComposerInlineTokens(props.value, {
2026-10-22T19:31:22.9929054Z  160 โ”‚       preserveTrailingFrom: confirmedTokensRef.current,
2026-10-22T19:31:22.9929175Z      ยท                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9929740Z      ยท                                      โ•ฐโ”€โ”€ 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-22T19:31:22.9929838Z  161 โ”‚     });
2026-10-22T19:31:22.9929943Z  162 โ”‚     confirmedTokensRef.current = tokens;
2026-10-22T19:31:22.9930027Z  163 โ”‚     return JSON.stringify(
2026-10-22T19:31:22.9930205Z  164 โ”‚       composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-22T19:31:22.9930277Z  165 โ”‚         const record =
2026-10-22T19:31:22.9930367Z  166 โ”‚           token.type === "context"
2026-10-22T19:31:22.9930546Z  167 โ”‚             ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-22T19:31:22.9930620Z  168 โ”‚             : undefined;
2026-10-22T19:31:22.9930741Z  169 โ”‚         const presentation = contextChipPresentation(
2026-10-22T19:31:22.9930862Z  170 โ”‚           token.type === "context" ? token.kind : token.type,
2026-10-22T19:31:22.9930933Z  171 โ”‚           record,
2026-10-22T19:31:22.9930999Z  172 โ”‚         );
2026-10-22T19:31:22.9931089Z  173 โ”‚         const icon = contextChipIcon(
2026-10-22T19:31:22.9931165Z  174 โ”‚           presentation,
2026-10-22T19:31:22.9931317Z  175 โ”‚           token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-22T19:31:22.9931383Z  176 โ”‚         );
2026-10-22T19:31:22.9931448Z  177 โ”‚         return {
2026-10-22T19:31:22.9931530Z  178 โ”‚           type: token.type,
2026-10-22T19:31:22.9931613Z  179 โ”‚           source: token.source,
2026-10-22T19:31:22.9931695Z  180 โ”‚           start: token.start,
2026-10-22T19:31:22.9931768Z  181 โ”‚           end: token.end,
2026-10-22T19:31:22.9931867Z  182 โ”‚           accent: presentation.accent,
2026-10-22T19:31:22.9931942Z  183 โ”‚           label:
2026-10-22T19:31:22.9932032Z  184 โ”‚             token.type === "skill"
2026-10-22T19:31:22.9932148Z  185 โ”‚               ? (skillLabels.get(token.value) ?? token.value)
2026-10-22T19:31:22.9932244Z  186 โ”‚               : token.type === "context"
2026-10-22T19:31:22.9932497Z  187 โ”‚                 ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
2026-10-22T19:31:22.9932591Z  188 โ”‚                 : basename(token.value),
2026-10-22T19:31:22.9932741Z  189 โ”‚           detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-22T19:31:22.9932846Z  190 โ”‚           iconUri: contextChipIconUri(icon),
2026-10-22T19:31:22.9932941Z  191 โ”‚           tintsIcon: icon.kind === "chip",
2026-10-22T19:31:22.9933005Z  192 โ”‚         };
2026-10-22T19:31:22.9933127Z  193 โ”‚       }),
2026-10-22T19:31:22.9933232Z  194 โ”‚     );
2026-10-22T19:31:22.9933343Z  195 โ”‚   }, [props.value, props.context, skillLabels]);
2026-10-22T19:31:22.9933476Z      ยท      โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9933688Z      ยท                          โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9933840Z  196 โ”‚   // Every render resolves against the snapshot history, so a render whose
2026-10-22T19:31:22.9933904Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9934130Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-22T19:31:22.9934463Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9934466Z
2026-10-22T19:31:22.9934734Z   โš  react(memo-dependencies): Found missing memoization dependencies
2026-10-22T19:31:22.9934892Z      โ•ญโ”€[apps/mobile/src/native/T3ComposerEditor.native.tsx:257:5]
2026-10-22T19:31:22.9935034Z  249 โ”‚       mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-22T19:31:22.9935144Z  250 โ”‚       nativeEventSnapshotsRef.current.push({
2026-10-22T19:31:22.9935248Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9935747Z      ยท                  โ•ฐโ”€โ”€ 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-22T19:31:22.9935853Z  251 โ”‚         eventCount: acknowledgedEventCount,
2026-10-22T19:31:22.9935925Z  252 โ”‚         value,
2026-10-22T19:31:22.9936016Z  253 โ”‚         selection: nextSelection,
2026-10-22T19:31:22.9936085Z  254 โ”‚       });
2026-10-22T19:31:22.9936180Z  255 โ”‚       return acknowledgedEventCount;
2026-10-22T19:31:22.9936238Z  256 โ”‚     },
2026-10-22T19:31:22.9936306Z  257 โ”‚     [],
2026-10-22T19:31:22.9936381Z      ยท     โ”€โ”ฌ
2026-10-22T19:31:22.9936580Z      ยท      โ•ฐโ”€โ”€ This dependency list is missing values used by the callback
2026-10-22T19:31:22.9936637Z  258 โ”‚   );
2026-10-22T19:31:22.9936696Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9936920Z   help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-22T19:31:22.9937255Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9937258Z
2026-10-22T19:31:22.9937438Z   โš  react(immutability): This value cannot be modified
2026-10-22T19:31:22.9937609Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-22T19:31:22.9937719Z  53 โ”‚ function usePulseAnimation(pulse: boolean) {
2026-10-22T19:31:22.9937825Z  54 โ”‚   const pulseProgress = useSharedValue(0);
2026-10-22T19:31:22.9937919Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9938070Z     ยท               โ•ฐโ”€โ”€ `pulseProgress` originates here
2026-10-22T19:31:22.9938133Z  55 โ”‚
2026-10-22T19:31:22.9938206Z  56 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9938277Z  57 โ”‚     if (pulse) {
2026-10-22T19:31:22.9938376Z  58 โ”‚       pulseProgress.value = withRepeat(
2026-10-22T19:31:22.9938468Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9938699Z     ยท             โ•ฐโ”€โ”€ `pulseProgress` cannot be modified
2026-10-22T19:31:22.9938819Z  59 โ”‚         withTiming(1, {
2026-10-22T19:31:22.9938893Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9939184Z   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-22T19:31:22.9939512Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-22T19:31:22.9939515Z
2026-10-22T19:31:22.9939795Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9939978Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-22T19:31:22.9940041Z  76 โ”‚
2026-10-22T19:31:22.9940115Z  77 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9940208Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9940351Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9940502Z  78 โ”‚     const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-22T19:31:22.9940578Z  79 โ”‚     setHostInput(host);
2026-10-22T19:31:22.9940672Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9940853Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9940933Z  80 โ”‚     setCodeInput(code);
2026-10-22T19:31:22.9944905Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9945604Z   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-22T19:31:22.9945963Z   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-22T19:31:22.9945969Z
2026-10-22T19:31:22.9946255Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9946446Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-22T19:31:22.9946508Z  82 โ”‚
2026-10-22T19:31:22.9946580Z  83 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9946657Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9946799Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9946898Z  84 โ”‚     if (routePairingUrl.length === 0) {
2026-10-22T19:31:22.9946971Z  85 โ”‚       return;
2026-10-22T19:31:22.9947032Z  86 โ”‚     }
2026-10-22T19:31:22.9947092Z  87 โ”‚
2026-10-22T19:31:22.9947222Z  88 โ”‚     const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-22T19:31:22.9947296Z  89 โ”‚     setHostInput(host);
2026-10-22T19:31:22.9947384Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9947573Z     ยท           โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9947647Z  90 โ”‚     setCodeInput(code);
2026-10-22T19:31:22.9947702Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9948348Z   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-22T19:31:22.9948794Z   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-22T19:31:22.9948836Z
2026-10-22T19:31:22.9949116Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9949299Z     โ•ญโ”€[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-22T19:31:22.9949353Z  92 โ”‚
2026-10-22T19:31:22.9949519Z  93 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9949604Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9949746Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9949835Z  94 โ”‚     if (pairingConnectionError) {
2026-10-22T19:31:22.9949924Z  95 โ”‚       setIsSubmitting(false);
2026-10-22T19:31:22.9950024Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9950213Z     ยท              โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9950272Z  96 โ”‚     }
2026-10-22T19:31:22.9950337Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9950981Z   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-22T19:31:22.9951328Z   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-22T19:31:22.9951331Z
2026-10-22T19:31:22.9951595Z   โš  eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-22T19:31:22.9951733Z     โ•ญโ”€[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-22T19:31:22.9951931Z  34 โ”‚     const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-22T19:31:22.9952041Z  35 โ”‚       instanceId === configured ? true : false,
2026-10-22T19:31:22.9952170Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9952229Z  36 โ”‚     );
2026-10-22T19:31:22.9952289Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9952402Z   help: Remove this ternary operator
2026-10-22T19:31:22.9952404Z
2026-10-22T19:31:22.9952639Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-22T19:31:22.9952753Z       โ•ญโ”€[apps/mobile/src/Stack.tsx:1044:21]
2026-10-22T19:31:22.9952838Z  1043 โ”‚     <Navigator
2026-10-22T19:31:22.9952987Z  1044 โ”‚       screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-22T19:31:22.9953138Z       ยท                     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9953212Z  1045 โ”‚       screenListeners={{
2026-10-22T19:31:22.9953272Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9953665Z   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-22T19:31:22.9953668Z
2026-10-22T19:31:22.9953909Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:22.9954060Z       โ•ญโ”€[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-22T19:31:22.9954130Z  1021 โ”‚             instanceId,
2026-10-22T19:31:22.9954426Z  1022 โ”‚             { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-22T19:31:22.9954976Z       ยท               โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9955052Z  1023 โ”‚           ]),
2026-10-22T19:31:22.9955107Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9955398Z   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-22T19:31:22.9955400Z
2026-10-22T19:31:22.9955807Z   โš  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-22T19:31:22.9955942Z      โ•ญโ”€[packages/shared/src/otelEnvironment.ts:143:14]
2026-10-22T19:31:22.9956003Z  142 โ”‚     name,
2026-10-22T19:31:22.9956164Z  143 โ”‚     (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-22T19:31:22.9956288Z      ยท              โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9956422Z  144 โ”‚     `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-22T19:31:22.9956477Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9956480Z
2026-10-22T19:31:22.9956763Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9956929Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-22T19:31:22.9956989Z  398 โ”‚
2026-10-22T19:31:22.9957063Z  399 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9957144Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9957287Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9957394Z  400 โ”‚     setInspectorSelection((current) => {
2026-10-22T19:31:22.9957496Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9957693Z      ยท               โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9957811Z  401 โ”‚       if (props.renderInspector === undefined) {
2026-10-22T19:31:22.9957883Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9958519Z   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-22T19:31:22.9958867Z   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-22T19:31:22.9958870Z
2026-10-22T19:31:22.9959168Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-22T19:31:22.9959389Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-22T19:31:22.9959563Z  527 โ”‚       const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-22T19:31:22.9959751Z  528 โ”‚ โ•ญโ”€โ–ถ   const GitInspector = () => (
2026-10-22T19:31:22.9959857Z  529 โ”‚ โ”‚       <GitOverviewSheet
2026-10-22T19:31:22.9959999Z  530 โ”‚ โ”‚         headerInset={inspectorHeaderInset}
2026-10-22T19:31:22.9960156Z  531 โ”‚ โ”‚         presentation="inspector"
2026-10-22T19:31:22.9960506Z  532 โ”‚ โ”‚         route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-22T19:31:22.9960657Z  533 โ”‚ โ”‚       />
2026-10-22T19:31:22.9960909Z  534 โ”‚ โ•ฐโ”€โ–ถ   );
2026-10-22T19:31:22.9961076Z  535 โ”‚       const FilesInspector = () =>
2026-10-22T19:31:22.9961187Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9961595Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-22T19:31:22.9961599Z
2026-10-22T19:31:22.9961989Z   โš  react(no-unstable-nested-components): Do not define components during render.
2026-10-22T19:31:22.9962266Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-22T19:31:22.9962376Z  534 โ”‚       );
2026-10-22T19:31:22.9962677Z  535 โ”‚ โ•ญโ”€โ–ถ   const FilesInspector = () =>
2026-10-22T19:31:22.9962976Z  536 โ”‚ โ”‚       selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-22T19:31:22.9963187Z  537 โ”‚ โ”‚         <ThreadFileNavigatorPane
2026-10-22T19:31:22.9963380Z  538 โ”‚ โ”‚           cwd={selectedThreadCwd}
2026-10-22T19:31:22.9963616Z  539 โ”‚ โ”‚           environmentId={selectedThread.environmentId}
2026-10-22T19:31:22.9963763Z  540 โ”‚ โ”‚           headerInset={inspectorHeaderInset}
2026-10-22T19:31:22.9963940Z  541 โ”‚ โ”‚           projectName={selectedThreadProject?.title ?? "Files"}
2026-10-22T19:31:22.9964116Z  542 โ”‚ โ”‚           selectedPath={null}
2026-10-22T19:31:22.9964324Z  543 โ”‚ โ”‚           onSelectFile={handleSelectInspectorFile}
2026-10-22T19:31:22.9964453Z  544 โ”‚ โ”‚         />
2026-10-22T19:31:22.9964736Z  545 โ”‚ โ•ฐโ”€โ–ถ     ) : null;
2026-10-22T19:31:22.9964988Z  546 โ”‚       const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-22T19:31:22.9965068Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9965434Z   help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-22T19:31:22.9965438Z
2026-10-22T19:31:22.9965767Z   โš  react(capitalized-calls): Capitalized function called without JSX
2026-10-22T19:31:22.9965954Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-22T19:31:22.9966157Z  601 โ”‚   const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-22T19:31:22.9966248Z  602 โ”‚   const gesture = Gesture.Pan()
2026-10-22T19:31:22.9966375Z      ยท                           โ”€โ”ฌโ”€
2026-10-22T19:31:22.9966687Z      ยท                            โ•ฐโ”€โ”€ `Pan` may be a component
2026-10-22T19:31:22.9966956Z  603 โ”‚     .enabled(!props.disabled)
2026-10-22T19:31:22.9967057Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9967602Z   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-22T19:31:22.9968460Z   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-22T19:31:22.9968469Z
2026-10-22T19:31:22.9968877Z   โš  react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-22T19:31:22.9969141Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:771:7]
2026-10-22T19:31:22.9969342Z  770 โ”‚     if (settingsSheetPresentation.isActive) {
2026-10-22T19:31:22.9969602Z  771 โ”‚       settingsRoutePresentation.present(settingsRouteSession);
2026-10-22T19:31:22.9969782Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9970103Z      ยท                   โ•ฐโ”€โ”€ Missing dependency `settingsRoutePresentation`
2026-10-22T19:31:22.9970201Z  772 โ”‚     }
2026-10-22T19:31:22.9970580Z  773 โ”‚   }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-22T19:31:22.9970778Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9971291Z      ยท                       โ•ฐโ”€โ”€ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-22T19:31:22.9971395Z  774 โ”‚
2026-10-22T19:31:22.9971497Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9972069Z   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-22T19:31:22.9972441Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9972444Z
2026-10-22T19:31:22.9972634Z   โš  react(immutability): This value cannot be modified
2026-10-22T19:31:22.9972828Z      โ•ญโ”€[apps/mobile/src/features/threads/ThreadComposer.tsx:389:5]
2026-10-22T19:31:22.9973033Z  385 โ”‚     typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-22T19:31:22.9973212Z  386 โ”‚   const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-22T19:31:22.9973336Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9973527Z      ยท                   โ•ฐโ”€โ”€ `animatedBorderRadius` originates here
2026-10-22T19:31:22.9973720Z  387 โ”‚   const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-22T19:31:22.9973820Z  388 โ”‚   useLayoutEffect(() => {
2026-10-22T19:31:22.9973945Z  389 โ”‚     animatedBorderRadius.value = shouldAnimate
2026-10-22T19:31:22.9974047Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9974240Z      ยท               โ•ฐโ”€โ”€ `animatedBorderRadius` cannot be modified
2026-10-22T19:31:22.9974357Z  390 โ”‚       ? withTiming(targetBorderRadius, {
2026-10-22T19:31:22.9974436Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9974797Z   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-22T19:31:22.9975566Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-22T19:31:22.9975693Z
2026-10-22T19:31:22.9976435Z   โš  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-22T19:31:22.9976769Z      โ•ญโ”€[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
2026-10-22T19:31:22.9977002Z  262 โ”‚       ...(update._meta !== undefined
2026-10-22T19:31:22.9977233Z  263 โ”‚         ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-22T19:31:22.9977393Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9977524Z  264 โ”‚         : {}),
2026-10-22T19:31:22.9977608Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9977644Z
2026-10-22T19:31:22.9978035Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:22.9978278Z      โ•ญโ”€[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-22T19:31:22.9978385Z  150 โ”‚
2026-10-22T19:31:22.9978514Z  151 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9978622Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9978873Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:22.9979037Z  152 โ”‚     if (!controlledSelectedPath) {
2026-10-22T19:31:22.9979227Z  153 โ”‚       return;
2026-10-22T19:31:22.9979367Z  154 โ”‚     }
2026-10-22T19:31:22.9979531Z  155 โ”‚     setExpandedPaths((current) => {
2026-10-22T19:31:22.9979687Z      ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9979891Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:22.9980088Z  156 โ”‚       const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-22T19:31:22.9980193Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9980975Z   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-22T19:31:22.9981446Z   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-22T19:31:22.9981452Z
2026-10-22T19:31:22.9981687Z   โš  typescript(no-extraneous-class): Unexpected class with only a constructor.
2026-10-22T19:31:22.9981920Z      โ•ญโ”€[apps/desktop/src/preview/Manager.test.ts:158:18]
2026-10-22T19:31:22.9982103Z  157 โ”‚       BrowserWindow: browserWindowConstructor,
2026-10-22T19:31:22.9982360Z  158 โ”‚ โ•ญโ”€โ–ถ   ClipboardItem: class {
2026-10-22T19:31:22.9982508Z  159 โ”‚ โ”‚       constructor(data: Record<string, unknown>) {
2026-10-22T19:31:22.9982637Z  160 โ”‚ โ”‚         clipboardItemConstructor(data);
2026-10-22T19:31:22.9982723Z  161 โ”‚ โ”‚       }
2026-10-22T19:31:22.9982948Z  162 โ”‚ โ•ฐโ”€โ–ถ   },
2026-10-22T19:31:22.9983065Z  163 โ”‚       clipboard: {
2026-10-22T19:31:22.9983136Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9983573Z   help: Try replacing this class with a standalone function or deleting it entirely
2026-10-22T19:31:22.9983678Z
2026-10-22T19:31:22.9984016Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-22T19:31:22.9984279Z      โ•ญโ”€[apps/server/src/provider/Drivers/CodexDriver.test.ts:418:14]
2026-10-22T19:31:22.9984375Z  417 โ”‚
2026-10-22T19:31:22.9984620Z  418 โ”‚   for (const {} of ["direct", "wrapper"] as const) {
2026-10-22T19:31:22.9984768Z      ยท              โ”€โ”€
2026-10-22T19:31:22.9984875Z  419 โ”‚   }
2026-10-22T19:31:22.9984985Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9985442Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-22T19:31:22.9985445Z
2026-10-22T19:31:22.9985710Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9985887Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-22T19:31:22.9986000Z  256 โ”‚     return () => cancelAnimationFrame(frame);
2026-10-22T19:31:22.9986093Z  257 โ”‚   }, [props.path, targetIndex]);
2026-10-22T19:31:22.9986178Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9986342Z      ยท            โ•ฐโ”€โ”€ Unnecessary dependency `props.path`
2026-10-22T19:31:22.9986399Z  258 โ”‚
2026-10-22T19:31:22.9986458Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9986784Z   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-22T19:31:22.9987130Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9987134Z
2026-10-22T19:31:22.9987349Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-22T19:31:22.9987518Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-22T19:31:22.9987606Z  292 โ”‚                     <SourceText
2026-10-22T19:31:22.9987717Z  293 โ”‚                       key={`${index}:${tokenIndex}`}
2026-10-22T19:31:22.9987843Z      ยท                       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9987927Z  294 โ”‚                       style={{
2026-10-22T19:31:22.9987987Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9988154Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-22T19:31:22.9988157Z
2026-10-22T19:31:22.9988396Z   โš  react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-22T19:31:22.9988575Z      โ•ญโ”€[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-22T19:31:22.9988650Z  308 โ”‚             return (
2026-10-22T19:31:22.9988753Z  309 โ”‚               <SourceText key={index}>
2026-10-22T19:31:22.9988866Z      ยท                           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9988943Z  310 โ”‚                 {body}
2026-10-22T19:31:22.9989010Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9989177Z   help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-22T19:31:22.9989180Z
2026-10-22T19:31:22.9989939Z   โš  react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-22T19:31:22.9990113Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:215:7]
2026-10-22T19:31:22.9990179Z  214 โ”‚     }
2026-10-22T19:31:22.9990275Z  215 โ”‚   }, [wrappedRender]);
2026-10-22T19:31:22.9990611Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9990973Z      ยท             โ•ฐโ”€โ”€ Unnecessary dependency `wrappedRender`
2026-10-22T19:31:22.9991037Z  216 โ”‚
2026-10-22T19:31:22.9991101Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9991419Z   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-22T19:31:22.9991900Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-22T19:31:22.9991904Z
2026-10-22T19:31:22.9992173Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-22T19:31:22.9992356Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:817:35]
2026-10-22T19:31:22.9992429Z  816 โ”‚       >
2026-10-22T19:31:22.9992554Z  817 โ”‚         <AdaptiveWorkspaceContext value={contextValue}>
2026-10-22T19:31:22.9992687Z      ยท                                   โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9992796Z  818 โ”‚           <NativeWorkspaceInspectorContext
2026-10-22T19:31:22.9992853Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9993094Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-22T19:31:22.9993254Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-22T19:31:22.9993256Z
2026-10-22T19:31:22.9993518Z   โš  react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-22T19:31:22.9993694Z      โ•ญโ”€[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:832:42]
2026-10-22T19:31:22.9993761Z  831 โ”‚     >
2026-10-22T19:31:22.9993899Z  832 โ”‚       <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-22T19:31:22.9994035Z      ยท                                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9994149Z  833 โ”‚         <WindowHingeContext value={windowHinge}>
2026-10-22T19:31:22.9994210Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9994447Z   help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-22T19:31:22.9994662Z         Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-22T19:31:22.9994666Z
2026-10-22T19:31:22.9994862Z   โš  react(immutability): This value cannot be modified
2026-10-22T19:31:22.9995047Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-22T19:31:22.9995205Z  35 โ”‚
2026-10-22T19:31:22.9995445Z  36 โ”‚   const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-22T19:31:22.9995545Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9995713Z     ยท                 โ•ฐโ”€โ”€ `inspectorProgress` originates here
2026-10-22T19:31:22.9995816Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-22T19:31:22.9995967Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-22T19:31:22.9996034Z  39 โ”‚
2026-10-22T19:31:22.9996151Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-22T19:31:22.9996246Z  41 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9996349Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-22T19:31:22.9996445Z     ยท     โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9996610Z     ยท             โ•ฐโ”€โ”€ `inspectorProgress` cannot be modified
2026-10-22T19:31:22.9996700Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-22T19:31:22.9996767Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9997153Z   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-22T19:31:22.9997492Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-22T19:31:22.9997495Z
2026-10-22T19:31:22.9997660Z   โš  react(immutability): This value cannot be modified
2026-10-22T19:31:22.9997834Z     โ•ญโ”€[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-22T19:31:22.9997939Z  37 โ”‚   const { renderedInspectorWidth } = props;
2026-10-22T19:31:22.9998084Z  38 โ”‚   const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-22T19:31:22.9998188Z     ยท         โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:22.9998368Z     ยท                   โ•ฐโ”€โ”€ `renderedContentWidth` originates here
2026-10-22T19:31:22.9998425Z  39 โ”‚
2026-10-22T19:31:22.9998514Z  40 โ”‚   const onClosed = props.onClosed;
2026-10-22T19:31:22.9998582Z  41 โ”‚   useEffect(() => {
2026-10-22T19:31:22.9998690Z  42 โ”‚     inspectorProgress.value = withTiming(
2026-10-22T19:31:22.9998776Z  43 โ”‚       inspectorVisible ? 1 : 0,
2026-10-22T19:31:22.9998860Z  44 โ”‚       WORKSPACE_PANE_TIMING,
2026-10-22T19:31:22.9998930Z  45 โ”‚       (finished) => {
2026-10-22T19:31:22.9999085Z  46 โ”‚         if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-22T19:31:22.9999175Z  47 โ”‚           runOnJS(onClosed)();
2026-10-22T19:31:22.9999250Z  48 โ”‚         }
2026-10-22T19:31:22.9999310Z  49 โ”‚       },
2026-10-22T19:31:22.9999380Z  50 โ”‚     );
2026-10-22T19:31:22.9999531Z  51 โ”‚     const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-22T19:31:22.9999619Z  52 โ”‚     renderedInspectorWidth.set(
2026-10-22T19:31:22.9999775Z  53 โ”‚       resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-22T19:31:22.9999840Z  54 โ”‚     );
2026-10-22T19:31:22.9999900Z  55 โ”‚   }, [
2026-10-22T19:31:22.9999974Z  56 โ”‚     inspectorProgress,
2026-10-22T19:31:23.0000047Z  57 โ”‚     inspectorVisible,
2026-10-22T19:31:23.0000120Z  58 โ”‚     inspectorWidth,
2026-10-22T19:31:23.0000189Z  59 โ”‚     onClosed,
2026-10-22T19:31:23.0000266Z  60 โ”‚     renderedInspectorWidth,
2026-10-22T19:31:23.0000365Z  61 โ”‚     resizing,
2026-10-22T19:31:23.0000427Z  62 โ”‚   ]);
2026-10-22T19:31:23.0000493Z  63 โ”‚
2026-10-22T19:31:23.0000561Z  64 โ”‚   useEffect(() => {
2026-10-22T19:31:23.0000740Z  65 โ”‚     const targetWidth = inspectorWidth ?? 0;
2026-10-22T19:31:23.0000925Z  66 โ”‚     if (!inspectorVisible || resizing) {
2026-10-22T19:31:23.0001037Z  67 โ”‚       renderedContentWidth.value = targetWidth;
2026-10-22T19:31:23.0001132Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0001313Z     ยท                 โ•ฐโ”€โ”€ `renderedContentWidth` cannot be modified
2026-10-22T19:31:23.0001386Z  68 โ”‚       return;
2026-10-22T19:31:23.0001447Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0001820Z   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-22T19:31:23.0002153Z   note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-22T19:31:23.0002156Z
2026-10-22T19:31:23.0002346Z   โš  eslint(no-empty-pattern): Empty object binding pattern
2026-10-22T19:31:23.0002482Z      โ•ญโ”€[apps/server/src/processRunner.test.ts:266:14]
2026-10-22T19:31:23.0002539Z  265 โ”‚
2026-10-22T19:31:23.0002662Z  266 โ”‚   for (const {} of ["timeout", "success"] as const) {
2026-10-22T19:31:23.0002748Z      ยท              โ”€โ”€
2026-10-22T19:31:23.0002813Z  267 โ”‚   }
2026-10-22T19:31:23.0002870Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0003121Z   help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-22T19:31:23.0003124Z
2026-10-22T19:31:23.0003428Z   โš  eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0003561Z      โ•ญโ”€[apps/server/src/usage/UsageService.ts:169:7]
2026-10-22T19:31:23.0003621Z  168 โ”‚
2026-10-22T19:31:23.0003714Z  169 โ”‚ const layerTest = Layer.succeed(
2026-10-22T19:31:23.0003800Z      ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0003950Z      ยท           โ•ฐโ”€โ”€ 'layerTest' is declared here
2026-10-22T19:31:23.0004019Z  170 โ”‚   UsageService,
2026-10-22T19:31:23.0004079Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0004201Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0004204Z
2026-10-22T19:31:23.0004486Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:23.0004734Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:118:7]
2026-10-22T19:31:23.0004798Z  113 โ”‚
2026-10-22T19:31:23.0004875Z  114 โ”‚   useEffect(() => {
2026-10-22T19:31:23.0004955Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0005105Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:23.0005204Z  115 โ”‚     if (orientationSettled) return;
2026-10-22T19:31:23.0005332Z  116 โ”‚     const orientation = getNativeShowcaseOrientation();
2026-10-22T19:31:23.0005418Z  117 โ”‚     if (orientation === null) {
2026-10-22T19:31:23.0005509Z  118 โ”‚       setOrientationSettled(true);
2026-10-22T19:31:23.0005613Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0005809Z      ยท                 โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:23.0005882Z  119 โ”‚       return;
2026-10-22T19:31:23.0005964Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0006749Z   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-22T19:31:23.0007235Z   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-22T19:31:23.0007238Z
2026-10-22T19:31:23.0007520Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:23.0007794Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:317:7]
2026-10-22T19:31:23.0007851Z  305 โ”‚
2026-10-22T19:31:23.0007926Z  306 โ”‚   useEffect(() => {
2026-10-22T19:31:23.0008008Z      ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0008151Z      ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:23.0008218Z  307 โ”‚     if (
2026-10-22T19:31:23.0008296Z  308 โ”‚       scene === null ||
2026-10-22T19:31:23.0008386Z  309 โ”‚       requestedScene === null ||
2026-10-22T19:31:23.0008472Z  310 โ”‚       scene !== requestedScene ||
2026-10-22T19:31:23.0008540Z  311 โ”‚       !hasFixture ||
2026-10-22T19:31:23.0008624Z  312 โ”‚       !orientationSettled ||
2026-10-22T19:31:23.0008702Z  313 โ”‚       !themeApplied ||
2026-10-22T19:31:23.0008837Z  314 โ”‚       (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-22T19:31:23.0008979Z  315 โ”‚       !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-22T19:31:23.0009045Z  316 โ”‚     ) {
2026-10-22T19:31:23.0009123Z  317 โ”‚       setReadyScene(null);
2026-10-22T19:31:23.0009211Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0009401Z      ยท             โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:23.0009472Z  318 โ”‚       return;
2026-10-22T19:31:23.0009530Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0010174Z   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-22T19:31:23.0010517Z   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-22T19:31:23.0010525Z
2026-10-22T19:31:23.0010820Z   โš  eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0011011Z      โ•ญโ”€[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:9]
2026-10-22T19:31:23.0011093Z  122 โ”‚     let cancelled = false;
2026-10-22T19:31:23.0011192Z  123 โ”‚     let lastOutcome: string | null = null;
2026-10-22T19:31:23.0011276Z      ยท         โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0011426Z      ยท              โ•ฐโ”€โ”€ 'lastOutcome' is declared here
2026-10-22T19:31:23.0011617Z  124 โ”‚     void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-22T19:31:23.0011675Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0011788Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0011791Z
2026-10-22T19:31:23.0012091Z   โš  eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-22T19:31:23.0012306Z      โ•ญโ”€[apps/server/src/provider/AntigravityAuth.ts:285:20]
2026-10-22T19:31:23.0012453Z  284 โ”‚     },
2026-10-22T19:31:23.0012552Z  285 โ”‚     (effect, flow, stopSessions) =>
2026-10-22T19:31:23.0012660Z      ยท                    โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0012822Z      ยท                          โ•ฐโ”€โ”€ 'stopSessions' is declared here
2026-10-22T19:31:23.0012895Z  286 โ”‚       effect.pipe(
2026-10-22T19:31:23.0012949Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0013063Z   help: Consider removing this parameter.
2026-10-22T19:31:23.0013066Z
2026-10-22T19:31:23.0013422Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0013601Z      โ•ญโ”€[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:408:7]
2026-10-22T19:31:23.0013657Z  407 โ”‚
2026-10-22T19:31:23.0013804Z  408 โ”‚ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-22T19:31:23.0013886Z      ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:23.0014025Z      ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-22T19:31:23.0014083Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0014198Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0014201Z
2026-10-22T19:31:23.0014883Z   โš  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-22T19:31:23.0015053Z       โ•ญโ”€[apps/server/src/usage/UsageService.test.ts:2383:7]
2026-10-22T19:31:23.0015166Z  2382 โ”‚           let orphanedAt: number | undefined;
2026-10-22T19:31:23.0015429Z  2383 โ”‚ โ•ญโ”€โ–ถ       for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-22T19:31:23.0015569Z  2384 โ”‚ โ”‚           const tasks: Array<() => void> = [];
2026-10-22T19:31:23.0015734Z  2385 โ”‚ โ”‚           const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-22T19:31:23.0015881Z  2386 โ”‚ โ”‚             scheduleTask: (task) => tasks.push(task),
2026-10-22T19:31:23.0015987Z  2387 โ”‚ โ”‚             flush: () => {
2026-10-22T19:31:23.0016175Z  2388 โ”‚ โ”‚               let task: (() => void) | undefined;
2026-10-22T19:31:23.0016458Z  2389 โ”‚ โ”‚               while ((task = tasks.shift()) !== undefined) task();
2026-10-22T19:31:23.0016604Z  2390 โ”‚ โ”‚             },
2026-10-22T19:31:23.0016746Z  2391 โ”‚ โ”‚           };
2026-10-22T19:31:23.0016882Z  2392 โ”‚ โ”‚
2026-10-22T19:31:23.0017179Z  2393 โ”‚ โ”‚           let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-22T19:31:23.0017374Z  2394 โ”‚ โ”‚           let requestChecks = 0;
2026-10-22T19:31:23.0017574Z  2395 โ”‚ โ”‚           const scheduler: Scheduler.Scheduler = {
2026-10-22T19:31:23.0017702Z  2396 โ”‚ โ”‚             executionMode: "async",
2026-10-22T19:31:23.0017836Z  2397 โ”‚ โ”‚             makeDispatcher: () => dispatcher,
2026-10-22T19:31:23.0017960Z  2398 โ”‚ โ”‚             shouldYield: (fiber) => {
2026-10-22T19:31:23.0018183Z  2399 โ”‚ โ”‚               if (fiber !== requestFiber) return false;
2026-10-22T19:31:23.0018370Z  2400 โ”‚ โ”‚               requestChecks += 1;
2026-10-22T19:31:23.0018661Z  2401 โ”‚ โ”‚               if (requestChecks !== interruptAt) return false;
2026-10-22T19:31:23.0018887Z  2402 โ”‚ โ”‚               fiber.interruptUnsafe();
2026-10-22T19:31:23.0018993Z  2403 โ”‚ โ”‚               return true;
2026-10-22T19:31:23.0019130Z  2404 โ”‚ โ”‚             },
2026-10-22T19:31:23.0019278Z  2405 โ”‚ โ”‚           };
2026-10-22T19:31:23.0019406Z  2406 โ”‚ โ”‚
2026-10-22T19:31:23.0019625Z  2407 โ”‚ โ”‚           const input: UsageSummaryInput = {
2026-10-22T19:31:23.0019798Z  2408 โ”‚ โ”‚             ...WINDOW,
2026-10-22T19:31:23.0020034Z  2409 โ”‚ โ”‚             sinceDay: UsageDay.make("2026-09-01"),
2026-10-22T19:31:23.0020400Z  2410 โ”‚ โ”‚             untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-22T19:31:23.0020492Z  2411 โ”‚ โ”‚           };
2026-10-22T19:31:23.0020625Z  2412 โ”‚ โ”‚           const first = yield* service
2026-10-22T19:31:23.0020744Z  2413 โ”‚ โ”‚             .readSummary(input)
2026-10-22T19:31:23.0020844Z  2414 โ”‚ โ”‚             .pipe(
2026-10-22T19:31:23.0020948Z  2415 โ”‚ โ”‚               Effect.exit,
2026-10-22T19:31:23.0021122Z  2416 โ”‚ โ”‚               Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-22T19:31:23.0021239Z  2417 โ”‚ โ”‚               Effect.forkChild,
2026-10-22T19:31:23.0021333Z  2418 โ”‚ โ”‚             );
2026-10-22T19:31:23.0021441Z  2419 โ”‚ โ”‚           requestFiber = first;
2026-10-22T19:31:23.0021562Z  2420 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:23.0021686Z  2421 โ”‚ โ”‚           dispatcher.flush();
2026-10-22T19:31:23.0021772Z  2422 โ”‚ โ”‚
2026-10-22T19:31:23.0021939Z  2423 โ”‚ โ”‚           const second = yield* service.readSummary(input).pipe(
2026-10-22T19:31:23.0022048Z  2424 โ”‚ โ”‚             Effect.match({
2026-10-22T19:31:23.0022183Z  2425 โ”‚ โ”‚               onFailure: (error) => error.reason,
2026-10-22T19:31:23.0022320Z  2426 โ”‚ โ”‚               onSuccess: () => "success" as const,
2026-10-22T19:31:23.0022414Z  2427 โ”‚ โ”‚             }),
2026-10-22T19:31:23.0022667Z  2428 โ”‚ โ”‚             Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-22T19:31:23.0022856Z  2429 โ”‚ โ”‚             Effect.forkChild,
2026-10-22T19:31:23.0023012Z  2430 โ”‚ โ”‚           );
2026-10-22T19:31:23.0023319Z  2431 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:23.0023542Z  2432 โ”‚ โ”‚           dispatcher.flush();
2026-10-22T19:31:23.0023779Z  2433 โ”‚ โ”‚           const secondExit = second.pollUnsafe();
2026-10-22T19:31:23.0023994Z  2434 โ”‚ โ”‚           if (secondExit === undefined) {
2026-10-22T19:31:23.0024191Z  2435 โ”‚ โ”‚             second.interruptUnsafe();
2026-10-22T19:31:23.0024387Z  2436 โ”‚ โ”‚             orphanedAt = interruptAt;
2026-10-22T19:31:23.0024495Z  2437 โ”‚ โ”‚             break;
2026-10-22T19:31:23.0024662Z  2438 โ”‚ โ”‚           }
2026-10-22T19:31:23.0024795Z  2439 โ”‚ โ”‚           if (Exit.isFailure(secondExit)) {
2026-10-22T19:31:23.0024966Z  2440 โ”‚ โ”‚             assert.fail("the matching request fiber was interrupted");
2026-10-22T19:31:23.0025060Z  2441 โ”‚ โ”‚           }
2026-10-22T19:31:23.0025228Z  2442 โ”‚ โ”‚           assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-22T19:31:23.0025382Z  2443 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:23.0025442Z  2444 โ”‚
2026-10-22T19:31:23.0025503Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0025506Z
2026-10-22T19:31:23.0025732Z   โš  eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-22T19:31:23.0025942Z       โ•ญโ”€[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-22T19:31:23.0026057Z  1782 โ”‚     assert.equal(
2026-10-22T19:31:23.0026323Z  1783 โ”‚       (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-22T19:31:23.0026510Z       ยท        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0026659Z  1784 โ”‚       stored.attachments[0]?.id,
2026-10-22T19:31:23.0026717Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0026903Z   help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-22T19:31:23.0026906Z
2026-10-22T19:31:23.0027110Z   โš  eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-22T19:31:23.0027258Z     โ•ญโ”€[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-22T19:31:23.0027349Z  14 โ”‚ import * as Layer from "effect/Layer";
2026-10-22T19:31:23.0027452Z  15 โ”‚ import type * as Scope from "effect/Scope";
2026-10-22T19:31:23.0027541Z     ยท                  โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:23.0027689Z     ยท                    โ•ฐโ”€โ”€ 'Scope' is imported here
2026-10-22T19:31:23.0027780Z  16 โ”‚ import * as Stream from "effect/Stream";
2026-10-22T19:31:23.0027846Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0027957Z   help: Consider removing this import.
2026-10-22T19:31:23.0027960Z
2026-10-22T19:31:23.0028467Z   โš  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-22T19:31:23.0028600Z      โ•ญโ”€[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-22T19:31:23.0028684Z  138 โ”‚       Effect.gen(function* () {
2026-10-22T19:31:23.0028929Z  139 โ”‚ โ•ญโ”€โ–ถ     while (fiber.pollUnsafe() === undefined) {
2026-10-22T19:31:23.0029156Z  140 โ”‚ โ”‚         yield* TestClock.adjust("100 millis");
2026-10-22T19:31:23.0030002Z  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-22T19:31:23.0030416Z  142 โ”‚ โ”‚         yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-22T19:31:23.0030561Z  143 โ”‚ โ•ฐโ”€โ–ถ     }
2026-10-22T19:31:23.0030659Z  144 โ”‚         return yield* Fiber.join(fiber);
2026-10-22T19:31:23.0030718Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0030722Z
2026-10-22T19:31:23.0031211Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-22T19:31:23.0031354Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1741:32]
2026-10-22T19:31:23.0031585Z  1740 โ”‚       const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
2026-10-22T19:31:23.0031937Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-22T19:31:23.0032148Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0032343Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-22T19:31:23.0032442Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0032447Z
2026-10-22T19:31:23.0033282Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-22T19:31:23.0033510Z       โ•ญโ”€[apps/server/src/serverSettings.test.ts:1742:34]
2026-10-22T19:31:23.0033857Z  1741 โ”‚       const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
2026-10-22T19:31:23.0034071Z  1742 โ”‚       const scriptsJson = yield* Schema.encodeEffect(
2026-10-22T19:31:23.0034257Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0034392Z  1743 โ”‚         Schema.fromJsonString(Schema.Array(ProjectScript)),
2026-10-22T19:31:23.0034449Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0034453Z
2026-10-22T19:31:23.0034747Z   โš  unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-22T19:31:23.0034901Z     โ•ญโ”€[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-22T19:31:23.0035043Z  18 โ”‚   const occurrences = collectComposerContextReferences(text);
2026-10-22T19:31:23.0035163Z  19 โ”‚   for (const occurrence of [...occurrences].reverse()) {
2026-10-22T19:31:23.0035282Z     ยท                                             โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0035463Z  20 โ”‚     const record = recordsById.get(occurrence.contextId);
2026-10-22T19:31:23.0035566Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0035933Z   help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-22T19:31:23.0035936Z
2026-10-22T19:31:23.0036332Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:23.0036470Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:236:17]
2026-10-22T19:31:23.0036658Z  235 โ”‚ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-22T19:31:23.0036905Z  236 โ”‚   const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-22T19:31:23.0037093Z      ยท                 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0037461Z  237 โ”‚   const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-22T19:31:23.0037627Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0037631Z
2026-10-22T19:31:23.0038101Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:23.0038234Z      โ•ญโ”€[apps/server/src/auth/RpcAuthorization.ts:255:26]
2026-10-22T19:31:23.0038342Z  254 โ”‚   if (method === WS_METHODS.assetsCreateUrl) {
2026-10-22T19:31:23.0038514Z  255 โ”‚     const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-22T19:31:23.0038639Z      ยท                          โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0038710Z  256 โ”‚     return [
2026-10-22T19:31:23.0038765Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0038767Z
2026-10-22T19:31:23.0038998Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-22T19:31:23.0039181Z     โ•ญโ”€[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-22T19:31:23.0039264Z  14 โ”‚ } from "@t3tools/contracts";
2026-10-22T19:31:23.0039359Z  15 โ”‚ import type {} from "@t3tools/contracts";
2026-10-22T19:31:23.0039439Z     ยท             โ”€โ”€
2026-10-22T19:31:23.0039639Z  16 โ”‚ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-22T19:31:23.0039700Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0039789Z   help: Remove empty braces
2026-10-22T19:31:23.0039792Z
2026-10-22T19:31:23.0040039Z   โš  unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-22T19:31:23.0040177Z      โ•ญโ”€[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-22T19:31:23.0040242Z  730 โ”‚       );
2026-10-22T19:31:23.0040485Z  731 โ”‚       const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-22T19:31:23.0040663Z      ยท                               โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0040869Z  732 โ”‚       expect(snapshot?.history).toBe("aa๐Ÿ˜€\rEND");
2026-10-22T19:31:23.0040968Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0041230Z   help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-22T19:31:23.0041233Z
2026-10-22T19:31:23.0041784Z   โš  t3code(no-inline-schema-compile): Hoist Schema.decodeEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-22T19:31:23.0041934Z       โ•ญโ”€[apps/server/src/vcs/GitVcsDriverCore.test.ts:1713:34]
2026-10-22T19:31:23.0042091Z  1712 โ”‚           const stat = branch.files!.find((file) => file.path === path)!;
2026-10-22T19:31:23.0042254Z  1713 โ”‚           const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-22T19:31:23.0042380Z       ยท                                  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0042453Z  1714 โ”‚             cwd,
2026-10-22T19:31:23.0042511Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0042514Z
2026-10-22T19:31:23.0042776Z   โš  unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-22T19:31:23.0042907Z      โ•ญโ”€[apps/server/src/vcs/GitVcsDriverCore.ts:509:11]
2026-10-22T19:31:23.0043025Z  508 โ”‚         GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-22T19:31:23.0043247Z  509 โ”‚         (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-22T19:31:23.0043405Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0043612Z  510 โ”‚     )
2026-10-22T19:31:23.0043782Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0043994Z   help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-22T19:31:23.0043997Z
2026-10-22T19:31:23.0044481Z   โš  t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-22T19:31:23.0044695Z       โ•ญโ”€[apps/server/src/assets/AssetAccess.test.ts:1043:32]
2026-10-22T19:31:23.0044846Z  1042 โ”‚         expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-22T19:31:23.0045055Z  1043 โ”‚         const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-22T19:31:23.0045181Z       ยท                                โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0045291Z  1044 โ”‚         expect(encoded).not.toContain(url);
2026-10-22T19:31:23.0045353Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0045355Z
2026-10-22T19:31:23.0045571Z   โš  eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-22T19:31:23.0045686Z     โ•ญโ”€[apps/server/src/auth/http.ts:28:10]
2026-10-22T19:31:23.0045780Z  27 โ”‚ import * as Schema from "effect/Schema";
2026-10-22T19:31:23.0045888Z  28 โ”‚ import { identity } from "effect/Function";
2026-10-22T19:31:23.0045977Z     ยท          โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:23.0046130Z     ยท              โ•ฐโ”€โ”€ 'identity' is imported here
2026-10-22T19:31:23.0046221Z  29 โ”‚ import * as Layer from "effect/Layer";
2026-10-22T19:31:23.0046281Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0046389Z   help: Consider removing this import.
2026-10-22T19:31:23.0046391Z
2026-10-22T19:31:23.0046642Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:23.0046793Z     โ•ญโ”€[apps/mobile/src/state/use-model-option-memory.ts:21:7]
2026-10-22T19:31:23.0046863Z  20 โ”‚     [instanceId]: {
2026-10-22T19:31:23.0046951Z  21 โ”‚       ...(state[instanceId] ?? {}),
2026-10-22T19:31:23.0047065Z     ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0047137Z  22 โ”‚       [model]: options,
2026-10-22T19:31:23.0047193Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0047483Z   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-22T19:31:23.0047486Z
2026-10-22T19:31:23.0047714Z   โš  eslint(no-unused-vars): Identifier 'HookForwarder' is imported but never used.
2026-10-22T19:31:23.0047834Z     โ•ญโ”€[infra/relay/src/http/Api.ts:69:13]
2026-10-22T19:31:23.0047988Z  68 โ”‚ import * as EnvironmentLinks from "../environments/EnvironmentLinks.ts";
2026-10-22T19:31:23.0048115Z  69 โ”‚ import * as HookForwarder from "../hooks/HookForwarder.ts";
2026-10-22T19:31:23.0048208Z     ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0048366Z     ยท                   โ•ฐโ”€โ”€ 'HookForwarder' is imported here
2026-10-22T19:31:23.0048477Z  70 โ”‚ import * as HeldHooks from "../hooks/HeldHooks.ts";
2026-10-22T19:31:23.0048535Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0048644Z   help: Consider removing this import.
2026-10-22T19:31:23.0048646Z
2026-10-22T19:31:23.0049227Z   โš  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-22T19:31:23.0049437Z     โ•ญโ”€[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-22T19:31:23.0049517Z  27 โ”‚     ) {
2026-10-22T19:31:23.0049737Z  28 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:23.0049895Z  29 โ”‚ โ”‚       const available = yield* service.peek(workspaceRoot);
2026-10-22T19:31:23.0050034Z  30 โ”‚ โ”‚       if (predicate(available)) return available;
2026-10-22T19:31:23.0050143Z  31 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-22T19:31:23.0050278Z  32 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-22T19:31:23.0050476Z  33 โ”‚       return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-22T19:31:23.0050541Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0050547Z
2026-10-22T19:31:23.0050825Z   โš  react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-22T19:31:23.0050968Z     โ•ญโ”€[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-22T19:31:23.0051086Z  83 โ”‚   const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-22T19:31:23.0051167Z  84 โ”‚   useEffect(() => {
2026-10-22T19:31:23.0051245Z     ยท   โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0051389Z     ยท       โ•ฐโ”€โ”€ This is the containing effect
2026-10-22T19:31:23.0051487Z  85 โ”‚     if (!actionState.isRunning) return;
2026-10-22T19:31:23.0051564Z  86 โ”‚     setNowMs(Date.now());
2026-10-22T19:31:23.0051641Z     ยท     โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:23.0051830Z     ยท         โ•ฐโ”€โ”€ Avoid calling setState() directly within an effect
2026-10-22T19:31:23.0051977Z  87 โ”‚     const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-22T19:31:23.0052034Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0052779Z   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-22T19:31:23.0053138Z   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-22T19:31:23.0053140Z
2026-10-22T19:31:23.0053871Z   โš  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-22T19:31:23.0054079Z     โ•ญโ”€[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-22T19:31:23.0054143Z  93 โ”‚     ) {
2026-10-22T19:31:23.0054356Z  94 โ”‚ โ•ญโ”€โ–ถ   for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-22T19:31:23.0054574Z  95 โ”‚ โ”‚       const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-22T19:31:23.0054781Z  96 โ”‚ โ”‚       if (predicate(project)) return project;
2026-10-22T19:31:23.0054892Z  97 โ”‚ โ”‚       yield* Effect.yieldNow;
2026-10-22T19:31:23.0055025Z  98 โ”‚ โ•ฐโ”€โ–ถ   }
2026-10-22T19:31:23.0055194Z  99 โ”‚       return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-22T19:31:23.0055257Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0055259Z
2026-10-22T19:31:23.0055760Z   โš  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-22T19:31:23.0055950Z      โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-22T19:31:23.0056062Z  565 โ”‚           let afterSequence = created[0]!.sequence;
2026-10-22T19:31:23.0056280Z  566 โ”‚ โ•ญโ”€โ–ถ       for (let index = 1; index <= 32; index += 1) {
2026-10-22T19:31:23.0056391Z  567 โ”‚ โ”‚           const nextEvent = {
2026-10-22T19:31:23.0056566Z  568 โ”‚ โ”‚             id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-22T19:31:23.0056715Z  569 โ”‚ โ”‚             type: "thread.metadata-updated" as const,
2026-10-22T19:31:23.0056823Z  570 โ”‚ โ”‚             threadId,
2026-10-22T19:31:23.0056940Z  571 โ”‚ โ”‚             providerInstanceId,
2026-10-22T19:31:23.0057047Z  572 โ”‚ โ”‚             occurredAt: now,
2026-10-22T19:31:23.0057208Z  573 โ”‚ โ”‚             payload: { ...thread, title: `Race update ${index}` },
2026-10-22T19:31:23.0057352Z  574 โ”‚ โ”‚           } satisfies OrchestrationV2DomainEvent;
2026-10-22T19:31:23.0057475Z  575 โ”‚ โ”‚           const reader = yield* eventSink
2026-10-22T19:31:23.0057606Z  576 โ”‚ โ”‚             .stream({ threadId, afterSequence })
2026-10-22T19:31:23.0057746Z  577 โ”‚ โ”‚             .pipe(Stream.runHead, Effect.forkChild);
2026-10-22T19:31:23.0057870Z  578 โ”‚ โ”‚           yield* Effect.yieldNow;
2026-10-22T19:31:23.0058052Z  579 โ”‚ โ”‚           const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-22T19:31:23.0058195Z  580 โ”‚ โ”‚           const received = yield* Fiber.join(reader);
2026-10-22T19:31:23.0058320Z  581 โ”‚ โ”‚           if (Option.isNone(received)) {
2026-10-22T19:31:23.0058534Z  582 โ”‚ โ”‚             return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-22T19:31:23.0058624Z  583 โ”‚ โ”‚           }
2026-10-22T19:31:23.0058800Z  584 โ”‚ โ”‚           assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-22T19:31:23.0058959Z  585 โ”‚ โ”‚           assert.equal(received.value.event.id, nextEvent.id);
2026-10-22T19:31:23.0059153Z  586 โ”‚ โ”‚           afterSequence = received.value.sequence;
2026-10-22T19:31:23.0059331Z  587 โ”‚ โ•ฐโ”€โ–ถ       }
2026-10-22T19:31:23.0059400Z  588 โ”‚         }),
2026-10-22T19:31:23.0059460Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0059462Z
2026-10-22T19:31:23.0059961Z   โš  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-22T19:31:23.0060151Z       โ•ญโ”€[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2327:9]
2026-10-22T19:31:23.0060241Z  2326 โ”‚             let settled = false;
2026-10-22T19:31:23.0060415Z  2327 โ”‚ โ•ญโ”€โ–ถ         while (!settled) {
2026-10-22T19:31:23.0060589Z  2328 โ”‚ โ”‚             settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-22T19:31:23.0060735Z  2329 โ”‚ โ”‚               (effect) => effect.status === "succeeded",
2026-10-22T19:31:23.0060828Z  2330 โ”‚ โ”‚             );
2026-10-22T19:31:23.0060967Z  2331 โ”‚ โ”‚             if (!settled) yield* Effect.yieldNow;
2026-10-22T19:31:23.0061116Z  2332 โ”‚ โ•ฐโ”€โ–ถ         }
2026-10-22T19:31:23.0061244Z  2333 โ”‚           }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-22T19:31:23.0061305Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0061307Z
2026-10-22T19:31:23.0061812Z   โš  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-22T19:31:23.0061977Z      โ•ญโ”€[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-22T19:31:23.0062118Z  132 โ”‚               const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-22T19:31:23.0062273Z  133 โ”‚ โ•ญโ”€โ–ถ           for (
2026-10-22T19:31:23.0062387Z  134 โ”‚ โ”‚               let attempt = 0;
2026-10-22T19:31:23.0062570Z  135 โ”‚ โ”‚               attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-22T19:31:23.0062674Z  136 โ”‚ โ”‚               attempt += 1
2026-10-22T19:31:23.0062766Z  137 โ”‚ โ”‚             ) {
2026-10-22T19:31:23.0062888Z  138 โ”‚ โ”‚               yield* Effect.yieldNow;
2026-10-22T19:31:23.0063046Z  139 โ”‚ โ•ฐโ”€โ–ถ           }
2026-10-22T19:31:23.0063180Z  140 โ”‚               expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-22T19:31:23.0063238Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0063240Z
2026-10-22T19:31:23.0063454Z   โš  eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-22T19:31:23.0063559Z     โ•ญโ”€[apps/server/src/ws.ts:9:13]
2026-10-22T19:31:23.0063655Z   8 โ”‚ import * as Effect from "effect/Effect";
2026-10-22T19:31:23.0063742Z   9 โ”‚ import * as Fiber from "effect/Fiber";
2026-10-22T19:31:23.0063829Z     ยท             โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:23.0063970Z     ยท               โ•ฐโ”€โ”€ 'Fiber' is imported here
2026-10-22T19:31:23.0064082Z  10 โ”‚ import * as FileSystem from "effect/FileSystem";
2026-10-22T19:31:23.0064141Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0064311Z   help: Consider removing this import.
2026-10-22T19:31:23.0064352Z
2026-10-22T19:31:23.0064595Z   โš  eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-22T19:31:23.0064734Z     โ•ญโ”€[apps/server/src/ws.ts:16:13]
2026-10-22T19:31:23.0064832Z  15 โ”‚ import * as Ref from "effect/Ref";
2026-10-22T19:31:23.0064968Z  16 โ”‚ import * as Schedule from "effect/Schedule";
2026-10-22T19:31:23.0065106Z     ยท             โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€
2026-10-22T19:31:23.0065334Z     ยท                 โ•ฐโ”€โ”€ 'Schedule' is imported here
2026-10-22T19:31:23.0065427Z  17 โ”‚ import * as Schema from "effect/Schema";
2026-10-22T19:31:23.0065486Z     โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0065597Z   help: Consider removing this import.
2026-10-22T19:31:23.0065600Z
2026-10-22T19:31:23.0065937Z   โš  eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0066051Z       โ•ญโ”€[apps/server/src/ws.ts:1251:13]
2026-10-22T19:31:23.0066219Z  1250 โ”‚       const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-22T19:31:23.0066438Z  1251 โ”‚       const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-22T19:31:23.0066554Z       ยท             โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0066738Z       ยท                         โ•ฐโ”€โ”€ 'projectSetupScriptRunner' is declared here
2026-10-22T19:31:23.0066921Z  1252 โ”‚       const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-22T19:31:23.0066979Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0067094Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0067097Z
2026-10-22T19:31:23.0067424Z   โš  eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0067604Z      โ•ญโ”€[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-22T19:31:23.0067663Z  345 โ”‚
2026-10-22T19:31:23.0067776Z  346 โ”‚ const layerFromProviderAdapter: Layer.Layer<
2026-10-22T19:31:23.0067877Z      ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0068059Z      ยท                   โ•ฐโ”€โ”€ 'layerFromProviderAdapter' is declared here
2026-10-22T19:31:23.0068154Z  347 โ”‚   ProviderAdapterRegistryV2,
2026-10-22T19:31:23.0068220Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0068332Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0068335Z
2026-10-22T19:31:23.0068646Z   โš  eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0068813Z        โ•ญโ”€[apps/server/src/orchestration-v2/Orchestrator.ts:12232:7]
2026-10-22T19:31:23.0068882Z  12231 โ”‚
2026-10-22T19:31:23.0069037Z  12232 โ”‚ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-22T19:31:23.0069133Z        ยท       โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0069299Z        ยท               โ•ฐโ”€โ”€ 'layerUnavailable' is declared here
2026-10-22T19:31:23.0069377Z  12233 โ”‚   OrchestratorV2,
2026-10-22T19:31:23.0069525Z        โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0069646Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0069648Z
2026-10-22T19:31:23.0069857Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-22T19:31:23.0070161Z      โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-22T19:31:23.0070381Z  554 โ”‚           assert.deepStrictEqual(
2026-10-22T19:31:23.0070563Z  555 โ”‚             (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-22T19:31:23.0070702Z      ยท                                                                      โ”ฌ
2026-10-22T19:31:23.0070886Z      ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-22T19:31:23.0070987Z  556 โ”‚             [
2026-10-22T19:31:23.0071076Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0071240Z   help: Consider removing this parameter.
2026-10-22T19:31:23.0071243Z
2026-10-22T19:31:23.0071444Z   โš  eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-22T19:31:23.0071640Z       โ•ญโ”€[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-22T19:31:23.0071731Z  1154 โ”‚           assert.deepStrictEqual(
2026-10-22T19:31:23.0071912Z  1155 โ”‚             (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-22T19:31:23.0072047Z       ยท                                                                      โ”ฌ
2026-10-22T19:31:23.0072226Z       ยท                                                                      โ•ฐโ”€โ”€ '_' is declared here
2026-10-22T19:31:23.0072293Z  1156 โ”‚             [
2026-10-22T19:31:23.0072352Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0072466Z   help: Consider removing this parameter.
2026-10-22T19:31:23.0072469Z
2026-10-22T19:31:23.0072659Z   โš  eslint(no-empty-pattern): Empty array binding pattern
2026-10-22T19:31:23.0072837Z       โ•ญโ”€[apps/server/src/pullRequest/PullRequestService.test.ts:1429:12]
2026-10-22T19:31:23.0072901Z  1428 โ”‚
2026-10-22T19:31:23.0072976Z  1429 โ”‚ for (const [] of [
2026-10-22T19:31:23.0073057Z       ยท            โ”€โ”€
2026-10-22T19:31:23.0073134Z  1430 โ”‚   ["github", "github.com"],
2026-10-22T19:31:23.0073192Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0073496Z   help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-22T19:31:23.0073499Z
2026-10-22T19:31:23.0073777Z   โš  eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0073920Z       โ•ญโ”€[packages/provider-pi/src/server/adapter.ts:3389:7]
2026-10-22T19:31:23.0073977Z  3388 โ”‚
2026-10-22T19:31:23.0074186Z  3389 โ”‚ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-22T19:31:23.0074316Z       ยท       โ”€โ”€โ”ฌโ”€โ”€
2026-10-22T19:31:23.0074486Z       ยท         โ•ฐโ”€โ”€ 'layer' is declared here
2026-10-22T19:31:23.0074595Z  3390 โ”‚   Layer.effect(
2026-10-22T19:31:23.0074668Z       โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0074802Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0074805Z
2026-10-22T19:31:23.0075092Z   โš  eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-22T19:31:23.0075232Z      โ•ญโ”€[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-22T19:31:23.0075293Z  339 โ”‚
2026-10-22T19:31:23.0075406Z  340 โ”‚ const layerTest = AnalyticsService.layerTest;
2026-10-22T19:31:23.0075492Z      ยท       โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0075721Z      ยท           โ•ฐโ”€โ”€ 'layerTest' is declared here
2026-10-22T19:31:23.0075855Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0075970Z   help: Consider removing this declaration.
2026-10-22T19:31:23.0075973Z
2026-10-22T19:31:23.0076203Z   โš  unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-22T19:31:23.0076316Z      โ•ญโ”€[packages/contracts/src/rpc.ts:295:8]
2026-10-22T19:31:23.0076396Z  294 โ”‚ } from "./device.ts";
2026-10-22T19:31:23.0076526Z  295 โ”‚ import {} from "./previewAutomation.ts";
2026-10-22T19:31:23.0076646Z      ยท        โ”€โ”€
2026-10-22T19:31:23.0076709Z  296 โ”‚ import {
2026-10-22T19:31:23.0076767Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0076859Z   help: Remove empty braces
2026-10-22T19:31:23.0076862Z
2026-10-22T19:31:23.0077109Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:23.0077250Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:114:11]
2026-10-22T19:31:23.0077329Z  113 โ”‚         const declared = {
2026-10-22T19:31:23.0077430Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-22T19:31:23.0077551Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0077662Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-22T19:31:23.0077724Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0078014Z   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-22T19:31:23.0078017Z
2026-10-22T19:31:23.0078257Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:23.0078397Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:115:11]
2026-10-22T19:31:23.0078501Z  114 โ”‚           ...(manifest.dependencies ?? {}),
2026-10-22T19:31:23.0078614Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-22T19:31:23.0078750Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0078856Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-22T19:31:23.0078916Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0079207Z   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-22T19:31:23.0079213Z
2026-10-22T19:31:23.0079455Z   โš  unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-22T19:31:23.0079595Z      โ•ญโ”€[scripts/lib/cli-external-packages.test.ts:116:11]
2026-10-22T19:31:23.0079773Z  115 โ”‚           ...(manifest.optionalDependencies ?? {}),
2026-10-22T19:31:23.0079955Z  116 โ”‚           ...(manifest.peerDependencies ?? {}),
2026-10-22T19:31:23.0080081Z      ยท           โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0080150Z  117 โ”‚         };
2026-10-22T19:31:23.0080205Z      โ•ฐโ”€โ”€โ”€โ”€
2026-10-22T19:31:23.0080506Z   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-22T19:31:23.0080510Z
2026-10-22T19:31:23.0080653Z Found 0 errors and 358 warnings in 5395 files (8.4s, 8 threads)
2026-10-22T19:31:23.0711391Z Post job cleanup.
2026-10-22T19:31:23.1419211Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-22T19:31:23.1497115Z Post job cleanup.
2026-10-22T19:31:23.1520834Z ##[start-action display=Cache full pnpm store;id=__c45f0923-ff65-4b57-8dbd-ccb026d2da0c.__actions_cache]
2026-10-22T19:31:23.1931494Z Post job cleanup.
2026-10-22T19:31:23.2934984Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-d651407d7d0c7ecacd035718e6d120760bb0bb1ea0b966bcda4a8197c80ebc8f, not saving cache.
2026-10-22T19:31:23.2992066Z ##[end-action id=__c45f0923-ff65-4b57-8dbd-ccb026d2da0c.__actions_cache;outcome=success;conclusion=success;duration_ms=147]
2026-10-22T19:31:23.2994657Z ##[start-action display=Cache Vite+;id=__c45f0923-ff65-4b57-8dbd-ccb026d2da0c.vp_cache]
2026-10-22T19:31:23.3026220Z Post job cleanup.
2026-10-22T19:31:23.3966831Z 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-22T19:31:23.4013263Z ##[end-action id=__c45f0923-ff65-4b57-8dbd-ccb026d2da0c.vp_cache;outcome=success;conclusion=success;duration_ms=101]
2026-10-22T19:31:23.4074858Z Post job cleanup.
2026-10-22T19:31:23.4615752Z [command]/usr/local/bin/git version
2026-10-22T19:31:23.4659436Z git version 2.55.0
2026-10-22T19:31:23.4682273Z Temporarily overriding HOME='/home/runner/_work/_temp/a768a96b-7f5a-4a6b-b484-ca0bed299f56' before making global git config changes
2026-10-22T19:31:23.4682664Z Adding repository directory to the temporary git global config as a safe directory
2026-10-22T19:31:23.4685909Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-22T19:31:23.4721800Z Removing SSH command configuration
2026-10-22T19:31:23.4725774Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-22T19:31:23.4759445Z [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-22T19:31:23.4926852Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-22T19:31:23.4958913Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-22T19:31:23.5006544Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-22T19:31:23.5031423Z ##[group]Run '/job_completed.sh'
2026-10-22T19:31:23.5043654Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-22T19:31:23.5043849Z env:
2026-10-22T19:31:23.5043976Z   BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 200
2026-10-22T19:31:23.5044145Z   BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 513
2026-10-22T19:31:23.5044302Z   BLACKSMITH_CHECK_RUN_ID: 120040171121
2026-10-22T19:31:23.5044458Z   BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-22T19:31:23.5044659Z   GITHUB_ACTIONS_CACHE_MODE: write
2026-10-22T19:31:23.5044816Z ##[endgroup]
2026-10-22T19:31:23.5148233Z Docker container cache not activated, skipping hash computation.
2026-10-22T19:31:23.5506222Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-22T19:31:23.5601928Z Cleaning up orphan processes