GitHub check
256 KB of 604 KB loaded Download the full log (604 KB)
348 KB of earlier output not loaded
4T15:12:30.4095300Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T15:12:30.4095509Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4095596Z 173 โ return endRequest;
2026-10-24T15:12:30.4095707Z โฐโโโโ
2026-10-24T15:12:30.4096352Z 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-24T15:12:30.4096713Z 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-24T15:12:30.4096717Z
2026-10-24T15:12:30.4096950Z โ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-24T15:12:30.4097146Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-24T15:12:30.4097283Z 24 โ import * as Schema from "effect/Schema";
2026-10-24T15:12:30.4097514Z 25 โ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-24T15:12:30.4097636Z ยท โโโโโโฌโโโโโ
2026-10-24T15:12:30.4097789Z ยท โฐโโ 'HostProcess' is imported here
2026-10-24T15:12:30.4097903Z 26 โ
2026-10-24T15:12:30.4097989Z โฐโโโโ
2026-10-24T15:12:30.4098121Z help: Consider removing this import.
2026-10-24T15:12:30.4098124Z
2026-10-24T15:12:30.4098415Z โ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4098623Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-24T15:12:30.4098751Z 123 โ const path = yield* Path.Path;
2026-10-24T15:12:30.4098905Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T15:12:30.4099022Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4099236Z ยท โฐโโ 'serverConfig' is declared here
2026-10-24T15:12:30.4099464Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T15:12:30.4099549Z โฐโโโโ
2026-10-24T15:12:30.4099693Z help: Consider removing this declaration.
2026-10-24T15:12:30.4099696Z
2026-10-24T15:12:30.4099988Z โ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4100192Z โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-24T15:12:30.4100418Z 124 โ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T15:12:30.4100596Z 125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T15:12:30.4100698Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4100877Z ยท โฐโโ 'serverSettings' is declared here
2026-10-24T15:12:30.4101071Z 126 โ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-24T15:12:30.4101157Z โฐโโโโ
2026-10-24T15:12:30.4101300Z help: Consider removing this declaration.
2026-10-24T15:12:30.4101303Z
2026-10-24T15:12:30.4101611Z โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4101793Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T15:12:30.4101891Z 217 โ
2026-10-24T15:12:30.4102078Z 218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T15:12:30.4102185Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T15:12:30.4102374Z ยท โฐโโ 'revokeActiveMcpThread' is declared here
2026-10-24T15:12:30.4102619Z 219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T15:12:30.4102708Z โฐโโโโ
2026-10-24T15:12:30.4102828Z help: Consider removing this declaration.
2026-10-24T15:12:30.4102831Z
2026-10-24T15:12:30.4103178Z โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4103341Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T15:12:30.4103514Z 220 โ
2026-10-24T15:12:30.4103710Z 221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T15:12:30.4103830Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4104044Z ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T15:12:30.4104274Z 222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T15:12:30.4104364Z โฐโโโโ
2026-10-24T15:12:30.4104482Z help: Consider removing this declaration.
2026-10-24T15:12:30.4104485Z
2026-10-24T15:12:30.4104788Z โ eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4104967Z โญโ[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
2026-10-24T15:12:30.4105066Z 913 โ
2026-10-24T15:12:30.4105270Z 914 โ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
2026-10-24T15:12:30.4105384Z ยท โโโโโโฌโโโโโ
2026-10-24T15:12:30.4105604Z ยท โฐโโ 'layerDaemon' is declared here
2026-10-24T15:12:30.4105785Z 915 โ runDaemon.pipe(Effect.forkScoped),
2026-10-24T15:12:30.4105852Z โฐโโโโ
2026-10-24T15:12:30.4105994Z help: Consider removing this declaration.
2026-10-24T15:12:30.4105996Z
2026-10-24T15:12:30.4106191Z โ eslint(no-new): Do not use 'new' for side effects.
2026-10-24T15:12:30.4106434Z โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-24T15:12:30.4106594Z 167 โ // @ts-expect-error a declaration constructed directly
2026-10-24T15:12:30.4106706Z 168 โ new McpToolAccess.Declaration(unchecked);
2026-10-24T15:12:30.4106837Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4106994Z 169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-24T15:12:30.4107100Z โฐโโโโ
2026-10-24T15:12:30.4107283Z help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-24T15:12:30.4107289Z
2026-10-24T15:12:30.4107509Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4107684Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T15:12:30.4107884Z 120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T15:12:30.4107998Z 121 โ const dispatch = vi.fn((_: unknown) =>
2026-10-24T15:12:30.4108115Z ยท โฌ
2026-10-24T15:12:30.4108284Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4108411Z 122 โ (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T15:12:30.4108491Z โฐโโโโ
2026-10-24T15:12:30.4108637Z help: Consider removing this parameter.
2026-10-24T15:12:30.4108646Z
2026-10-24T15:12:30.4108871Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4109131Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T15:12:30.4109229Z 133 โ );
2026-10-24T15:12:30.4109359Z 134 โ const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T15:12:30.4109492Z ยท โฌ
2026-10-24T15:12:30.4109670Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4109765Z 135 โ Effect.succeed(
2026-10-24T15:12:30.4109843Z โฐโโโโ
2026-10-24T15:12:30.4109984Z help: Consider removing this parameter.
2026-10-24T15:12:30.4109987Z
2026-10-24T15:12:30.4110264Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4110466Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T15:12:30.4110531Z 177 โ });
2026-10-24T15:12:30.4110689Z 178 โ const sendToThread = vi.fn((_: unknown) => {
2026-10-24T15:12:30.4110812Z ยท โฌ
2026-10-24T15:12:30.4110980Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4111097Z 179 โ switch (options.continuation ?? "queued") {
2026-10-24T15:12:30.4111185Z โฐโโโโ
2026-10-24T15:12:30.4111332Z help: Consider removing this parameter.
2026-10-24T15:12:30.4111334Z
2026-10-24T15:12:30.4111631Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4111781Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T15:12:30.4111868Z 202 โ );
2026-10-24T15:12:30.4112030Z 203 โ const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T15:12:30.4112156Z ยท โฌ
2026-10-24T15:12:30.4112309Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4112425Z 204 โ options.removeWorktreeFails
2026-10-24T15:12:30.4112514Z โฐโโโโ
2026-10-24T15:12:30.4112657Z help: Consider removing this parameter.
2026-10-24T15:12:30.4112660Z
2026-10-24T15:12:30.4112857Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4113023Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T15:12:30.4113110Z 207 โ );
2026-10-24T15:12:30.4113263Z 208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T15:12:30.4113397Z ยท โฌ
2026-10-24T15:12:30.4113584Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4113709Z 209 โ options.deleteLocalBranchFails
2026-10-24T15:12:30.4113798Z โฐโโโโ
2026-10-24T15:12:30.4113941Z help: Consider removing this parameter.
2026-10-24T15:12:30.4113944Z
2026-10-24T15:12:30.4114222Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4114392Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T15:12:30.4114478Z 212 โ );
2026-10-24T15:12:30.4114649Z 213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T15:12:30.4114764Z ยท โฌ
2026-10-24T15:12:30.4114950Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4115077Z 214 โ options.fetchWorktreeBaseFails
2026-10-24T15:12:30.4115166Z โฐโโโโ
2026-10-24T15:12:30.4115287Z help: Consider removing this parameter.
2026-10-24T15:12:30.4115290Z
2026-10-24T15:12:30.4115505Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4115679Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T15:12:30.4115759Z 253 โ );
2026-10-24T15:12:30.4115880Z 254 โ const localStatus = vi.fn((_: unknown) =>
2026-10-24T15:12:30.4116013Z ยท โฌ
2026-10-24T15:12:30.4116187Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4116349Z 255 โ Effect.succeed({
2026-10-24T15:12:30.4116441Z โฐโโโโ
2026-10-24T15:12:30.4116669Z help: Consider removing this parameter.
2026-10-24T15:12:30.4116672Z
2026-10-24T15:12:30.4116892Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T15:12:30.4117058Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T15:12:30.4117139Z 263 โ );
2026-10-24T15:12:30.4117319Z 264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T15:12:30.4117459Z ยท โฌ
2026-10-24T15:12:30.4117628Z ยท โฐโโ '_' is declared here
2026-10-24T15:12:30.4117810Z 265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T15:12:30.4117870Z โฐโโโโ
2026-10-24T15:12:30.4118035Z help: Consider removing this parameter.
2026-10-24T15:12:30.4118041Z
2026-10-24T15:12:30.4118336Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4118504Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T15:12:30.4118575Z 57 โ
2026-10-24T15:12:30.4118682Z 58 โ useEffect(() => {
2026-10-24T15:12:30.4118800Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4118964Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4119075Z 59 โ const controller = new AbortController();
2026-10-24T15:12:30.4123363Z 60 โ setLoadState("pending");
2026-10-24T15:12:30.4123461Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4123684Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4123857Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T15:12:30.4123910Z โฐโโโโ
2026-10-24T15:12:30.4124522Z 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-24T15:12:30.4124856Z 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-24T15:12:30.4124859Z
2026-10-24T15:12:30.4125066Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4125207Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T15:12:30.4125293Z 70 โ return () => controller.abort();
2026-10-24T15:12:30.4125390Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-24T15:12:30.4125568Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-24T15:12:30.4125800Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-24T15:12:30.4126004Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-24T15:12:30.4126144Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-24T15:12:30.4126198Z 72 โ
2026-10-24T15:12:30.4126250Z โฐโโโโ
2026-10-24T15:12:30.4126634Z 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-24T15:12:30.4127068Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4127071Z
2026-10-24T15:12:30.4127261Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T15:12:30.4127420Z โญโ[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-24T15:12:30.4127593Z 601 โ const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-24T15:12:30.4127673Z 602 โ const gesture = Gesture.Pan()
2026-10-24T15:12:30.4127760Z ยท โโฌโ
2026-10-24T15:12:30.4127909Z ยท โฐโโ `Pan` may be a component
2026-10-24T15:12:30.4127989Z 603 โ .enabled(!props.disabled)
2026-10-24T15:12:30.4128044Z โฐโโโโ
2026-10-24T15:12:30.4128322Z 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-24T15:12:30.4128777Z 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-24T15:12:30.4128780Z
2026-10-24T15:12:30.4128949Z โ eslint(no-empty-pattern): Empty array binding pattern
2026-10-24T15:12:30.4129109Z โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1437:12]
2026-10-24T15:12:30.4129169Z 1436 โ
2026-10-24T15:12:30.4129240Z 1437 โ for (const [] of [
2026-10-24T15:12:30.4129314Z ยท โโ
2026-10-24T15:12:30.4129386Z 1438 โ ["github", "github.com"],
2026-10-24T15:12:30.4129440Z โฐโโโโ
2026-10-24T15:12:30.4129719Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-24T15:12:30.4129722Z
2026-10-24T15:12:30.4130100Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4130251Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:272:25]
2026-10-24T15:12:30.4130361Z 271 โ {record.elements?.map((element, index) => (
2026-10-24T15:12:30.4130534Z 272 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T15:12:30.4130696Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4130774Z 273 โ <ContextField
2026-10-24T15:12:30.4130827Z โฐโโโโ
2026-10-24T15:12:30.4130974Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4130977Z
2026-10-24T15:12:30.4131239Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4131389Z โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-24T15:12:30.4131551Z 28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-24T15:12:30.4131618Z 29 โ useEffect(() => {
2026-10-24T15:12:30.4131690Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4131903Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4132073Z 30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-24T15:12:30.4132180Z ยท โโโโฌโโโ
2026-10-24T15:12:30.4132375Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4132448Z 31 โ }, [key, live, snapshot]);
2026-10-24T15:12:30.4132501Z โฐโโโโ
2026-10-24T15:12:30.4133108Z 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-24T15:12:30.4133438Z 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-24T15:12:30.4133445Z
2026-10-24T15:12:30.4133691Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T15:12:30.4133837Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-24T15:12:30.4133941Z 772 โ if (settingsSheetPresentation.isActive) {
2026-10-24T15:12:30.4134072Z 773 โ settingsRoutePresentation.present(settingsRouteSession);
2026-10-24T15:12:30.4134167Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T15:12:30.4134344Z ยท โฐโโ Missing dependency `settingsRoutePresentation`
2026-10-24T15:12:30.4134401Z 774 โ }
2026-10-24T15:12:30.4134612Z 775 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-24T15:12:30.4134726Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4135012Z ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-24T15:12:30.4135068Z 776 โ
2026-10-24T15:12:30.4135120Z โฐโโโโ
2026-10-24T15:12:30.4135544Z 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-24T15:12:30.4135862Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4135865Z
2026-10-24T15:12:30.4136030Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4136176Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-24T15:12:30.4136337Z 387 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-24T15:12:30.4136472Z 388 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-24T15:12:30.4136565Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4136722Z ยท โฐโโ `animatedBorderRadius` originates here
2026-10-24T15:12:30.4136880Z 389 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-24T15:12:30.4136949Z 390 โ useLayoutEffect(() => {
2026-10-24T15:12:30.4137052Z 391 โ animatedBorderRadius.value = shouldAnimate
2026-10-24T15:12:30.4137196Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4137388Z ยท โฐโโ `animatedBorderRadius` cannot be modified
2026-10-24T15:12:30.4137478Z 392 โ ? withTiming(targetBorderRadius, {
2026-10-24T15:12:30.4137532Z โฐโโโโ
2026-10-24T15:12:30.4137801Z 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-24T15:12:30.4138111Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4138114Z
2026-10-24T15:12:30.4138369Z โ eslint(no-unused-vars): Function 'layerClaudeAgentSdkReplayQueryRunner' is declared but never used.
2026-10-24T15:12:30.4138558Z โญโ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts:960:10]
2026-10-24T15:12:30.4138616Z 959 โ
2026-10-24T15:12:30.4138726Z 960 โ function layerClaudeAgentSdkReplayQueryRunner(
2026-10-24T15:12:30.4138842Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4139043Z ยท โฐโโ 'layerClaudeAgentSdkReplayQueryRunner' is declared here
2026-10-24T15:12:30.4139146Z 961 โ transcript: ClaudeAgentSdkReplayTranscript,
2026-10-24T15:12:30.4139199Z โฐโโโโ
2026-10-24T15:12:30.4139303Z help: Consider removing this declaration.
2026-10-24T15:12:30.4139307Z
2026-10-24T15:12:30.4139565Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4139715Z โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-24T15:12:30.4139774Z 150 โ
2026-10-24T15:12:30.4139841Z 151 โ useEffect(() => {
2026-10-24T15:12:30.4139912Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4140043Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4140129Z 152 โ if (!controlledSelectedPath) {
2026-10-24T15:12:30.4140193Z 153 โ return;
2026-10-24T15:12:30.4140248Z 154 โ }
2026-10-24T15:12:30.4140335Z 155 โ setExpandedPaths((current) => {
2026-10-24T15:12:30.4140417Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4140587Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4140713Z 156 โ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-24T15:12:30.4140765Z โฐโโโโ
2026-10-24T15:12:30.4141425Z 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-24T15:12:30.4141780Z 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-24T15:12:30.4141783Z
2026-10-24T15:12:30.4142001Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T15:12:30.4142175Z โญโ[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-24T15:12:30.4142255Z 248 โ mountedRef.current = false;
2026-10-24T15:12:30.4142333Z 249 โ flow.setBranchQuery("");
2026-10-24T15:12:30.4142407Z ยท โโโฌโ
2026-10-24T15:12:30.4142539Z ยท โฐโโ Missing dependency `flow`
2026-10-24T15:12:30.4142598Z 250 โ };
2026-10-24T15:12:30.4142671Z 251 โ }, [flow.setBranchQuery]);
2026-10-24T15:12:30.4142758Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4142964Z ยท โฐโโ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-24T15:12:30.4143019Z 252 โ
2026-10-24T15:12:30.4143072Z โฐโโโโ
2026-10-24T15:12:30.4143495Z 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-24T15:12:30.4143837Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4143843Z
2026-10-24T15:12:30.4144046Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4144194Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-24T15:12:30.4144292Z 256 โ return () => cancelAnimationFrame(frame);
2026-10-24T15:12:30.4144371Z 257 โ }, [props.path, targetIndex]);
2026-10-24T15:12:30.4144448Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4144594Z ยท โฐโโ Unnecessary dependency `props.path`
2026-10-24T15:12:30.4144648Z 258 โ
2026-10-24T15:12:30.4144699Z โฐโโโโ
2026-10-24T15:12:30.4145001Z 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-24T15:12:30.4145317Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4145320Z
2026-10-24T15:12:30.4145516Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4145666Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-24T15:12:30.4145739Z 292 โ <SourceText
2026-10-24T15:12:30.4145841Z 293 โ key={`${index}:${tokenIndex}`}
2026-10-24T15:12:30.4145960Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4146031Z 294 โ style={{
2026-10-24T15:12:30.4146083Z โฐโโโโ
2026-10-24T15:12:30.4146291Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4146329Z
2026-10-24T15:12:30.4146526Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4146674Z โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-24T15:12:30.4146740Z 308 โ return (
2026-10-24T15:12:30.4146871Z 309 โ <SourceText key={index}>
2026-10-24T15:12:30.4146973Z ยท โโโโโโโโโโโ
2026-10-24T15:12:30.4147039Z 310 โ {body}
2026-10-24T15:12:30.4147090Z โฐโโโโ
2026-10-24T15:12:30.4147237Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4147240Z
2026-10-24T15:12:30.4147505Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4147669Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T15:12:30.4147732Z 259 โ .join("|");
2026-10-24T15:12:30.4147797Z 260 โ useEffect(() => {
2026-10-24T15:12:30.4147869Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4148000Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4148080Z 261 โ stop();
2026-10-24T15:12:30.4148150Z ยท โโโฌโ
2026-10-24T15:12:30.4148317Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4148384Z 262 โ }, [orderVersion]);
2026-10-24T15:12:30.4148435Z โฐโโโโ
2026-10-24T15:12:30.4149045Z 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-24T15:12:30.4149375Z 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-24T15:12:30.4149378Z
2026-10-24T15:12:30.4149597Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T15:12:30.4149758Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T15:12:30.4149822Z 260 โ useEffect(() => {
2026-10-24T15:12:30.4149883Z 261 โ stop();
2026-10-24T15:12:30.4149951Z ยท โโโฌโ
2026-10-24T15:12:30.4150083Z ยท โฐโโ Missing dependency `stop`
2026-10-24T15:12:30.4150151Z 262 โ }, [orderVersion]);
2026-10-24T15:12:30.4150231Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4150379Z ยท โฐโโ Unnecessary dependency `orderVersion`
2026-10-24T15:12:30.4150440Z 263 โ useEffect(
2026-10-24T15:12:30.4150493Z โฐโโโโ
2026-10-24T15:12:30.4150914Z 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-24T15:12:30.4151228Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4151231Z
2026-10-24T15:12:30.4151435Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4151624Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T15:12:30.4151703Z 95 โ const latest = useRef(props);
2026-10-24T15:12:30.4151774Z 96 โ latest.current = props;
2026-10-24T15:12:30.4151880Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T15:12:30.4152059Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T15:12:30.4152174Z ยท โฐโโ This value is a ref
2026-10-24T15:12:30.4152243Z 97 โ const gesture = useMemo(
2026-10-24T15:12:30.4152296Z โฐโโโโ
2026-10-24T15:12:30.4152774Z 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-24T15:12:30.4153071Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4153074Z
2026-10-24T15:12:30.4153221Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4153382Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T15:12:30.4153450Z 103 โ .runOnJS(true)
2026-10-24T15:12:30.4153571Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T15:12:30.4153690Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4153893Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4154035Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4154089Z โฐโโโโ
2026-10-24T15:12:30.4154565Z 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-24T15:12:30.4154859Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4154862Z
2026-10-24T15:12:30.4155007Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4155169Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T15:12:30.4155271Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T15:12:30.4155405Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4155550Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4155764Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4155888Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4155941Z โฐโโโโ
2026-10-24T15:12:30.4156410Z 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-24T15:12:30.4156760Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4156794Z
2026-10-24T15:12:30.4156938Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4157097Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T15:12:30.4157227Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4157350Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4157492Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4157698Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4157831Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T15:12:30.4157888Z โฐโโโโ
2026-10-24T15:12:30.4158357Z 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-24T15:12:30.4158648Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4158650Z
2026-10-24T15:12:30.4158793Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4158954Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T15:12:30.4159077Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4159205Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T15:12:30.4159345Z ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4159555Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4159626Z 108 โ [props.disabled],
2026-10-24T15:12:30.4159678Z โฐโโโโ
2026-10-24T15:12:30.4160145Z 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-24T15:12:30.4160439Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4160495Z
2026-10-24T15:12:30.4160670Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4160830Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T15:12:30.4160945Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T15:12:30.4161050Z 249 โ latest.current = { rows, planners, moveThread };
2026-10-24T15:12:30.4161157Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T15:12:30.4161339Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T15:12:30.4161455Z ยท โฐโโ This value is a ref
2026-10-24T15:12:30.4161508Z 250 โ
2026-10-24T15:12:30.4161560Z โฐโโโโ
2026-10-24T15:12:30.4162038Z 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-24T15:12:30.4162334Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4162336Z
2026-10-24T15:12:30.4162481Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4162640Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T15:12:30.4162760Z 246 โ const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T15:12:30.4162875Z 247 โ const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T15:12:30.4163007Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4163179Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4163292Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T15:12:30.4163344Z โฐโโโโ
2026-10-24T15:12:30.4163836Z 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-24T15:12:30.4164127Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4164130Z
2026-10-24T15:12:30.4164298Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4164464Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T15:12:30.4164534Z 323 โ update(0);
2026-10-24T15:12:30.4164616Z 324 โ let last = performance.now();
2026-10-24T15:12:30.4164712Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4164854Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4164924Z 325 โ const tick = () => {
2026-10-24T15:12:30.4164976Z โฐโโโโ
2026-10-24T15:12:30.4165276Z help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T15:12:30.4165572Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4165575Z
2026-10-24T15:12:30.4165825Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T15:12:30.4166016Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T15:12:30.4166077Z 98 โ () =>
2026-10-24T15:12:30.4166143Z 99 โ Gesture.Pan()
2026-10-24T15:12:30.4166219Z ยท โโฌโ
2026-10-24T15:12:30.4166351Z ยท โฐโโ `Pan` may be a component
2026-10-24T15:12:30.4166431Z 100 โ .enabled(!props.disabled)
2026-10-24T15:12:30.4166483Z โฐโโโโ
2026-10-24T15:12:30.4166760Z 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-24T15:12:30.4167212Z 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-24T15:12:30.4167218Z
2026-10-24T15:12:30.4167406Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T15:12:30.4167564Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T15:12:30.4167632Z 103 โ .runOnJS(true)
2026-10-24T15:12:30.4167733Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T15:12:30.4167822Z ยท โโโโฌโโ
2026-10-24T15:12:30.4168262Z ยท โฐโโ Missing dependency `latest`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T15:12:30.4168399Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4168523Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T15:12:30.4168647Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T15:12:30.4168716Z 108 โ [props.disabled],
2026-10-24T15:12:30.4168797Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4168985Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T15:12:30.4169041Z 109 โ );
2026-10-24T15:12:30.4169092Z โฐโโโโ
2026-10-24T15:12:30.4169300Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T15:12:30.4169619Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4169625Z
2026-10-24T15:12:30.4169853Z โ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T15:12:30.4170095Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:1998:15]
2026-10-24T15:12:30.4170162Z 1997 โ assert.equal(
2026-10-24T15:12:30.4170311Z 1998 โ items.filter((item) => item.type === "assistant_message").at(-1)?.text,
2026-10-24T15:12:30.4170391Z ยท โโโโโโ
2026-10-24T15:12:30.4170469Z 1999 โ "authoritative answer",
2026-10-24T15:12:30.4170522Z โฐโโโโ
2026-10-24T15:12:30.4170694Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T15:12:30.4170697Z
2026-10-24T15:12:30.4171238Z โ 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-24T15:12:30.4171451Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:3951:7]
2026-10-24T15:12:30.4171633Z 3950 โ const closeFiber = yield* Scope.close(sessionScope, Exit.void).pipe(Effect.forkScoped);
2026-10-24T15:12:30.4171843Z 3951 โ โญโโถ while (!responseLifecycle.includes("failed")) {
2026-10-24T15:12:30.4171954Z 3952 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4172089Z 3953 โ โฐโโถ }
2026-10-24T15:12:30.4172218Z 3954 โ const responseExit = yield* Fiber.join(responseFiber);
2026-10-24T15:12:30.4172273Z โฐโโโโ
2026-10-24T15:12:30.4172275Z
2026-10-24T15:12:30.4172744Z โ 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-24T15:12:30.4172913Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6062:9]
2026-10-24T15:12:30.4173004Z 6061 โ .pipe(Effect.forkScoped);
2026-10-24T15:12:30.4173189Z 6062 โ โญโโถ while (promptGates.length < 1) {
2026-10-24T15:12:30.4173299Z 6063 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4173442Z 6064 โ โฐโโถ }
2026-10-24T15:12:30.4173640Z 6065 โ assert.isDefined(sessionUpdateHandler, "session update handler must be wired");
2026-10-24T15:12:30.4173692Z โฐโโโโ
2026-10-24T15:12:30.4173695Z
2026-10-24T15:12:30.4174156Z โ 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-24T15:12:30.4174323Z โญโ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6197:9]
2026-10-24T15:12:30.4174411Z 6196 โ .pipe(Effect.forkScoped);
2026-10-24T15:12:30.4174593Z 6197 โ โญโโถ while (promptGates.length < 2) {
2026-10-24T15:12:30.4174701Z 6198 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4174840Z 6199 โ โฐโโถ }
2026-10-24T15:12:30.4175012Z 6200 โ if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-24T15:12:30.4175065Z โฐโโโโ
2026-10-24T15:12:30.4175067Z
2026-10-24T15:12:30.4175532Z โ 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-24T15:12:30.4175682Z โญโ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T15:12:30.4175816Z 132 โ const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T15:12:30.4175960Z 133 โ โญโโถ for (
2026-10-24T15:12:30.4176118Z 134 โ โ let attempt = 0;
2026-10-24T15:12:30.4176319Z 135 โ โ attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T15:12:30.4176418Z 136 โ โ attempt += 1
2026-10-24T15:12:30.4176502Z 137 โ โ ) {
2026-10-24T15:12:30.4176612Z 138 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4176745Z 139 โ โฐโโถ }
2026-10-24T15:12:30.4176869Z 140 โ expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T15:12:30.4176921Z โฐโโโโ
2026-10-24T15:12:30.4176924Z
2026-10-24T15:12:30.4177188Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4177362Z โญโ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10578:7]
2026-10-24T15:12:30.4177421Z 10577 โ
2026-10-24T15:12:30.4177495Z 10578 โ const layer: Layer.Layer<
2026-10-24T15:12:30.4177568Z ยท โโโฌโโ
2026-10-24T15:12:30.4177695Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4177790Z 10579 โ ProviderAdapter.ProviderAdapterV2,
2026-10-24T15:12:30.4177843Z โฐโโโโ
2026-10-24T15:12:30.4177948Z help: Consider removing this declaration.
2026-10-24T15:12:30.4177951Z
2026-10-24T15:12:30.4178096Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4178256Z โญโ[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
2026-10-24T15:12:30.4178311Z 276 โ
2026-10-24T15:12:30.4178498Z 277 โ โญโโถ return createElement(RawNativeView, {
2026-10-24T15:12:30.4178595Z 278 โ โ ...nativeProps,
2026-10-24T15:12:30.4178739Z 279 โ โ refreshEnabled: props.onPullToRefresh !== undefined,
2026-10-24T15:12:30.4178833Z 280 โ โ ref: nativeRef,
2026-10-24T15:12:30.4178962Z 281 โ โโโถ });
2026-10-24T15:12:30.4179202Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4179257Z 282 โ }
2026-10-24T15:12:30.4179309Z โฐโโโโ
2026-10-24T15:12:30.4179786Z 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-24T15:12:30.4180080Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4180083Z
2026-10-24T15:12:30.4180459Z โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4180588Z โญโ[apps/server/src/assets/AssetAccess.test.ts:975:35]
2026-10-24T15:12:30.4180737Z 974 โ // Every client and server release spells the resource this way on the wire.
2026-10-24T15:12:30.4180892Z 975 โ const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-24T15:12:30.4181070Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4181224Z 976 โ resource: { _tag: "github-media", cwd: "/repo", url },
2026-10-24T15:12:30.4181277Z โฐโโโโ
2026-10-24T15:12:30.4181279Z
2026-10-24T15:12:30.4181735Z โ 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-24T15:12:30.4181866Z โญโ[apps/server/src/assets/AssetAccess.test.ts:1012:32]
2026-10-24T15:12:30.4182005Z 1011 โ expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-24T15:12:30.4182193Z 1012 โ const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-24T15:12:30.4182315Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4182414Z 1013 โ expect(encoded).not.toContain(url);
2026-10-24T15:12:30.4182467Z โฐโโโโ
2026-10-24T15:12:30.4182470Z
2026-10-24T15:12:30.4182806Z โ eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4182971Z โญโ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1444:7]
2026-10-24T15:12:30.4183025Z 1443 โ
2026-10-24T15:12:30.4183141Z 1444 โ const layerCodexAppServerClientFactoryCommand = (
2026-10-24T15:12:30.4183258Z ยท โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4183466Z ยท โฐโโ 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-24T15:12:30.4183629Z 1445 โ options: CodexClient.CodexAppServerClientOptions & {
2026-10-24T15:12:30.4183686Z โฐโโโโ
2026-10-24T15:12:30.4183788Z help: Consider removing this declaration.
2026-10-24T15:12:30.4183790Z
2026-10-24T15:12:30.4184049Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4184211Z โญโ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1680:7]
2026-10-24T15:12:30.4184266Z 1679 โ
2026-10-24T15:12:30.4184336Z 1680 โ const layer: Layer.Layer<
2026-10-24T15:12:30.4184407Z ยท โโโฌโโ
2026-10-24T15:12:30.4184535Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4184629Z 1681 โ ProviderAdapter.ProviderAdapterV2,
2026-10-24T15:12:30.4184680Z โฐโโโโ
2026-10-24T15:12:30.4184840Z help: Consider removing this declaration.
2026-10-24T15:12:30.4184874Z
2026-10-24T15:12:30.4185345Z โ 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-24T15:12:30.4185530Z โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T15:12:30.4185602Z 520 โ })).delivery;
2026-10-24T15:12:30.4185797Z 521 โ โญโโถ while (delivery.outcome === "accepted") {
2026-10-24T15:12:30.4185913Z 522 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4186061Z 523 โ โ delivery = (yield* service.getWebhookDelivery({
2026-10-24T15:12:30.4186169Z 524 โ โ id: task.id,
2026-10-24T15:12:30.4186288Z 525 โ โ deliveryId: deliveryId!,
2026-10-24T15:12:30.4186387Z 526 โ โ })).delivery;
2026-10-24T15:12:30.4186524Z 527 โ โฐโโถ }
2026-10-24T15:12:30.4186641Z 528 โ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T15:12:30.4186694Z โฐโโโโ
2026-10-24T15:12:30.4186697Z
2026-10-24T15:12:30.4186855Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4187012Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:94:5]
2026-10-24T15:12:30.4187065Z 83 โ
2026-10-24T15:12:30.4187158Z 84 โ const cardCoverage = props.cardCoverage;
2026-10-24T15:12:30.4187239Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4187382Z ยท โฐโโ `cardCoverage` originates here
2026-10-24T15:12:30.4187465Z 85 โ const barHeightRef = useRef(0);
2026-10-24T15:12:30.4187543Z 86 โ const cardHeightRef = useRef(0);
2026-10-24T15:12:30.4187628Z 87 โ const cardHeight = useSharedValue(0);
2026-10-24T15:12:30.4187721Z 88 โ const notifyCoverage = useCallback(() => {
2026-10-24T15:12:30.4187788Z 89 โ if (!cardCoverage) {
2026-10-24T15:12:30.4187848Z 90 โ return;
2026-10-24T15:12:30.4187902Z 91 โ }
2026-10-24T15:12:30.4188069Z 92 โ // The card resizes with the keyboard every frame, so easing each sample would leave the
2026-10-24T15:12:30.4188170Z 93 โ // feed inset and floating controls trailing it.
2026-10-24T15:12:30.4188328Z 94 โ cardCoverage.value = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T15:12:30.4188411Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4188552Z ยท โฐโโ `cardCoverage` cannot be modified
2026-10-24T15:12:30.4188619Z 95 โ }, [cardCoverage]);
2026-10-24T15:12:30.4188671Z โฐโโโโ
2026-10-24T15:12:30.4188972Z help: Do not mutate component props or hook arguments. If the value should change, update it where it is owned and pass an update callback, or use local state
2026-10-24T15:12:30.4189282Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4189284Z
2026-10-24T15:12:30.4189443Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4189599Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:106:7]
2026-10-24T15:12:30.4189738Z 86 โ const cardHeightRef = useRef(0);
2026-10-24T15:12:30.4189859Z 87 โ const cardHeight = useSharedValue(0);
2026-10-24T15:12:30.4189937Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4190071Z ยท โฐโโ `cardHeight` originates here
2026-10-24T15:12:30.4190167Z 88 โ const notifyCoverage = useCallback(() => {
2026-10-24T15:12:30.4190235Z 89 โ if (!cardCoverage) {
2026-10-24T15:12:30.4190297Z 90 โ return;
2026-10-24T15:12:30.4190350Z 91 โ }
2026-10-24T15:12:30.4190515Z 92 โ // The card resizes with the keyboard every frame, so easing each sample would leave the
2026-10-24T15:12:30.4190616Z 93 โ // feed inset and floating controls trailing it.
2026-10-24T15:12:30.4190773Z 94 โ cardCoverage.value = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T15:12:30.4190838Z 95 โ }, [cardCoverage]);
2026-10-24T15:12:30.4190927Z 96 โ const handleBarLayout = useCallback(
2026-10-24T15:12:30.4191014Z 97 โ (event: LayoutChangeEvent) => {
2026-10-24T15:12:30.4191135Z 98 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4191201Z 99 โ notifyCoverage();
2026-10-24T15:12:30.4191257Z 100 โ },
2026-10-24T15:12:30.4191324Z 101 โ [notifyCoverage],
2026-10-24T15:12:30.4191377Z 102 โ );
2026-10-24T15:12:30.4191462Z 103 โ const handleCardLayout = useCallback(
2026-10-24T15:12:30.4191544Z 104 โ (event: LayoutChangeEvent) => {
2026-10-24T15:12:30.4191669Z 105 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4191783Z 106 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4191859Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4192005Z ยท โฐโโ `cardHeight` cannot be modified
2026-10-24T15:12:30.4192076Z 107 โ notifyCoverage();
2026-10-24T15:12:30.4192128Z โฐโโโโ
2026-10-24T15:12:30.4192395Z 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-24T15:12:30.4192703Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4192705Z
2026-10-24T15:12:30.4192907Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T15:12:30.4193064Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:94:5]
2026-10-24T15:12:30.4193149Z 87 โ const cardHeight = useSharedValue(0);
2026-10-24T15:12:30.4193245Z 88 โ const notifyCoverage = useCallback(() => {
2026-10-24T15:12:30.4193352Z ยท โโโโฌโโโ
2026-10-24T15:12:30.4193628Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T15:12:30.4193694Z 89 โ if (!cardCoverage) {
2026-10-24T15:12:30.4193754Z 90 โ return;
2026-10-24T15:12:30.4193809Z 91 โ }
2026-10-24T15:12:30.4193974Z 92 โ // The card resizes with the keyboard every frame, so easing each sample would leave the
2026-10-24T15:12:30.4194074Z 93 โ // feed inset and floating controls trailing it.
2026-10-24T15:12:30.4194231Z 94 โ cardCoverage.value = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T15:12:30.4194307Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4194509Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T15:12:30.4194610Z 95 โ }, [cardCoverage]);
2026-10-24T15:12:30.4194662Z โฐโโโโ
2026-10-24T15:12:30.4195005Z help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T15:12:30.4195310Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4195313Z
2026-10-24T15:12:30.4195513Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T15:12:30.4195667Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:94:5]
2026-10-24T15:12:30.4195768Z 93 โ // feed inset and floating controls trailing it.
2026-10-24T15:12:30.4195929Z 94 โ cardCoverage.value = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T15:12:30.4196006Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4196136Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T15:12:30.4196201Z 95 โ }, [cardCoverage]);
2026-10-24T15:12:30.4196286Z 96 โ const handleBarLayout = useCallback(
2026-10-24T15:12:30.4196367Z 97 โ (event: LayoutChangeEvent) => {
2026-10-24T15:12:30.4196472Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4196697Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T15:12:30.4196818Z 98 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4196871Z โฐโโโโ
2026-10-24T15:12:30.4197215Z help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T15:12:30.4197523Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4197526Z
2026-10-24T15:12:30.4197724Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T15:12:30.4197882Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:106:7]
2026-10-24T15:12:30.4197970Z 103 โ const handleCardLayout = useCallback(
2026-10-24T15:12:30.4198051Z 104 โ (event: LayoutChangeEvent) => {
2026-10-24T15:12:30.4198158Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4198386Z ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T15:12:30.4198516Z 105 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4198629Z 106 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T15:12:30.4198706Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4198836Z ยท โฐโโ This modifies `cardHeight`
2026-10-24T15:12:30.4198904Z 107 โ notifyCoverage();
2026-10-24T15:12:30.4198955Z โฐโโโโ
2026-10-24T15:12:30.4199292Z help: This argument is a function which may reassign or mutate `cardHeight` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T15:12:30.4199659Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4199699Z
2026-10-24T15:12:30.4199929Z โ eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-24T15:12:30.4200095Z โญโ[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-24T15:12:30.4200147Z 1397 โ
2026-10-24T15:12:30.4200235Z 1398 โ function assertUserMessagesExclude(
2026-10-24T15:12:30.4200339Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T15:12:30.4200508Z ยท โฐโโ 'assertUserMessagesExclude' is declared here
2026-10-24T15:12:30.4200617Z 1399 โ projection: OrchestrationV2ThreadProjection,
2026-10-24T15:12:30.4200670Z โฐโโโโ
2026-10-24T15:12:30.4200773Z help: Consider removing this declaration.
2026-10-24T15:12:30.4200776Z
2026-10-24T15:12:30.4200991Z โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T15:12:30.4201121Z โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T15:12:30.4201175Z 78 โ
2026-10-24T15:12:30.4201312Z 79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T15:12:30.4201398Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4201545Z ยท โฐโโ 'describeSchedule' is declared here
2026-10-24T15:12:30.4201653Z 80 โ if (schedule.type === "webhook") return "On webhook";
2026-10-24T15:12:30.4201705Z โฐโโโโ
2026-10-24T15:12:30.4201807Z help: Consider removing this declaration.
2026-10-24T15:12:30.4201809Z
2026-10-24T15:12:30.4202075Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4202232Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-24T15:12:30.4202285Z 55 โ
2026-10-24T15:12:30.4202352Z 56 โ useEffect(() => {
2026-10-24T15:12:30.4202422Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4202551Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4202620Z 57 โ setDecodedSize(null);
2026-10-24T15:12:30.4202698Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4202866Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4202935Z 58 โ }, [props.sourceKey]);
2026-10-24T15:12:30.4202986Z โฐโโโโ
2026-10-24T15:12:30.4203622Z 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-24T15:12:30.4203949Z 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-24T15:12:30.4203953Z
2026-10-24T15:12:30.4204212Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4204364Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-24T15:12:30.4204417Z 59 โ
2026-10-24T15:12:30.4204482Z 60 โ useEffect(() => {
2026-10-24T15:12:30.4204550Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4204732Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4204923Z 61 โ setFailedUri(null);
2026-10-24T15:12:30.4204999Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4205165Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4205232Z 62 โ }, [props.uri]);
2026-10-24T15:12:30.4205284Z โฐโโโโ
2026-10-24T15:12:30.4205889Z 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-24T15:12:30.4206216Z 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-24T15:12:30.4206224Z
2026-10-24T15:12:30.4206440Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T15:12:30.4206591Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-24T15:12:30.4206716Z 6 โ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-24T15:12:30.4206894Z 7 โ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-24T15:12:30.4206981Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4207131Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T15:12:30.4207183Z 8 โ
2026-10-24T15:12:30.4207236Z โฐโโโโ
2026-10-24T15:12:30.4207334Z help: Consider removing this import.
2026-10-24T15:12:30.4207337Z
2026-10-24T15:12:30.4207543Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4207697Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-24T15:12:30.4207765Z 57 โ setDecodedSize(null);
2026-10-24T15:12:30.4207833Z 58 โ }, [props.sourceKey]);
2026-10-24T15:12:30.4207914Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4208067Z ยท โฐโโ Unnecessary dependency `props.sourceKey`
2026-10-24T15:12:30.4208119Z 59 โ
2026-10-24T15:12:30.4208169Z โฐโโโโ
2026-10-24T15:12:30.4208464Z 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-24T15:12:30.4208829Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4208866Z
2026-10-24T15:12:30.4209069Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4209218Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-24T15:12:30.4209286Z 61 โ setFailedUri(null);
2026-10-24T15:12:30.4209351Z 62 โ }, [props.uri]);
2026-10-24T15:12:30.4209426Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4209566Z ยท โฐโโ Unnecessary dependency `props.uri`
2026-10-24T15:12:30.4209618Z 63 โ
2026-10-24T15:12:30.4209669Z โฐโโโโ
2026-10-24T15:12:30.4210094Z 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-24T15:12:30.4210413Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4210423Z
2026-10-24T15:12:30.4210616Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4210785Z โญโ[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:818:17]
2026-10-24T15:12:30.4210849Z 817 โ <div
2026-10-24T15:12:30.4210963Z 818 โ key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-24T15:12:30.4211103Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4211272Z 819 โ className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-24T15:12:30.4211324Z โฐโโโโ
2026-10-24T15:12:30.4211478Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4211485Z
2026-10-24T15:12:30.4211652Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4211789Z โญโ[apps/web/src/components/CustomSnoozeDialog.tsx:140:58]
2026-10-24T15:12:30.4211926Z 139 โ {...(weekStartsOn === undefined ? {} : { weekStartsOn })}
2026-10-24T15:12:30.4212073Z 140 โ disabled={{ before: new Date(new Date().setHours(0, 0, 0, 0)) }}
2026-10-24T15:12:30.4212194Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4212369Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4212474Z 141 โ onSelect={(selected) => {
2026-10-24T15:12:30.4212530Z โฐโโโโ
2026-10-24T15:12:30.4212809Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T15:12:30.4213107Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4213110Z
2026-10-24T15:12:30.4213396Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T15:12:30.4213588Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:473:19]
2026-10-24T15:12:30.4213651Z 472 โ onFilters,
2026-10-24T15:12:30.4213718Z 473 โ authorOptions = [],
2026-10-24T15:12:30.4213865Z ยท โโ
2026-10-24T15:12:30.4213972Z 474 โ labelOptions = [],
2026-10-24T15:12:30.4214023Z โฐโโโโ
2026-10-24T15:12:30.4214340Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T15:12:30.4214343Z
2026-10-24T15:12:30.4214626Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T15:12:30.4214795Z โญโ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:474:18]
2026-10-24T15:12:30.4214863Z 473 โ authorOptions = [],
2026-10-24T15:12:30.4214928Z 474 โ labelOptions = [],
2026-10-24T15:12:30.4215005Z ยท โโ
2026-10-24T15:12:30.4215070Z 475 โ optionScope,
2026-10-24T15:12:30.4215122Z โฐโโโโ
2026-10-24T15:12:30.4215445Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T15:12:30.4215453Z
2026-10-24T15:12:30.4215713Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4215845Z โญโ[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-24T15:12:30.4215899Z 3404 โ
2026-10-24T15:12:30.4216089Z 3405 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-24T15:12:30.4216161Z ยท โโโฌโโ
2026-10-24T15:12:30.4216289Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4216355Z 3406 โ Layer.effect(
2026-10-24T15:12:30.4216408Z โฐโโโโ
2026-10-24T15:12:30.4216516Z help: Consider removing this declaration.
2026-10-24T15:12:30.4216522Z
2026-10-24T15:12:30.4216689Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4216812Z โญโ[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T15:12:30.4216918Z 820 โ const resolved = resolveThreadTarget(target);
2026-10-24T15:12:30.4217076Z 821 โ if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T15:12:30.4217200Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4217370Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4217452Z 822 โ return AsyncResult.failure(
2026-10-24T15:12:30.4217503Z โฐโโโโ
2026-10-24T15:12:30.4217789Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T15:12:30.4218090Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4218093Z
2026-10-24T15:12:30.4218259Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4218380Z โญโ[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T15:12:30.4218451Z 708 โ const wokeAt = resolved
2026-10-24T15:12:30.4218585Z 709 โ ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T15:12:30.4218698Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4218920Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4219010Z 710 โ : null;
2026-10-24T15:12:30.4219061Z โฐโโโโ
2026-10-24T15:12:30.4219336Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T15:12:30.4219630Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4219632Z
2026-10-24T15:12:30.4219831Z โ eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-24T15:12:30.4219967Z โญโ[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-24T15:12:30.4220064Z 23 โ import * as Deferred from "effect/Deferred";
2026-10-24T15:12:30.4220162Z 24 โ import * as Duration from "effect/Duration";
2026-10-24T15:12:30.4220243Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4220378Z ยท โฐโโ 'Duration' is imported here
2026-10-24T15:12:30.4220467Z 25 โ import * as Effect from "effect/Effect";
2026-10-24T15:12:30.4220520Z โฐโโโโ
2026-10-24T15:12:30.4220618Z help: Consider removing this import.
2026-10-24T15:12:30.4220621Z
2026-10-24T15:12:30.4220789Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T15:12:30.4220982Z โญโ[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-24T15:12:30.4221035Z 52 โ
2026-10-24T15:12:30.4221100Z 53 โ for (const {} of [
2026-10-24T15:12:30.4221173Z ยท โโ
2026-10-24T15:12:30.4221246Z 54 โ { healthy: true },
2026-10-24T15:12:30.4221300Z โฐโโโโ
2026-10-24T15:12:30.4221530Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T15:12:30.4221533Z
2026-10-24T15:12:30.4221746Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T15:12:30.4221880Z โญโ[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-24T15:12:30.4221955Z 89 โ let cursor = prompt.length;
2026-10-24T15:12:30.4222062Z 90 โ for (const occurrence of occurrences.reverse()) {
2026-10-24T15:12:30.4222168Z ยท โโโโโโโ
2026-10-24T15:12:30.4222248Z 91 โ let { start, end } = occurrence;
2026-10-24T15:12:30.4222300Z โฐโโโโ
2026-10-24T15:12:30.4222570Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T15:12:30.4222577Z
2026-10-24T15:12:30.4222852Z โ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4223001Z โญโ[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-24T15:12:30.4223055Z 60 โ ) {
2026-10-24T15:12:30.4223226Z 61 โ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-24T15:12:30.4223305Z ยท โโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4223448Z ยท โฐโโ 'useDragRegion' is declared here
2026-10-24T15:12:30.4223563Z 62 โ const isInline = props.mode === "inline";
2026-10-24T15:12:30.4223617Z โฐโโโโ
2026-10-24T15:12:30.4223774Z help: Consider removing this declaration.
2026-10-24T15:12:30.4223811Z
2026-10-24T15:12:30.4224070Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4224212Z โญโ[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-24T15:12:30.4224266Z 3754 โ
2026-10-24T15:12:30.4224465Z 3755 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-24T15:12:30.4224538Z ยท โโโฌโโ
2026-10-24T15:12:30.4224664Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4224731Z 3756 โ Layer.effect(
2026-10-24T15:12:30.4224783Z โฐโโโโ
2026-10-24T15:12:30.4224886Z help: Consider removing this declaration.
2026-10-24T15:12:30.4224888Z
2026-10-24T15:12:30.4225370Z โ 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-24T15:12:30.4225522Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-24T15:12:30.4225585Z 168 โ });
2026-10-24T15:12:30.4225785Z 169 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T15:12:30.4225980Z 170 โ โ if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-24T15:12:30.4226088Z 171 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4226221Z 172 โ โฐโโถ }
2026-10-24T15:12:30.4226282Z 173 โ
2026-10-24T15:12:30.4226339Z โฐโโโโ
2026-10-24T15:12:30.4226342Z
2026-10-24T15:12:30.4226812Z โ 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-24T15:12:30.4226960Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-24T15:12:30.4227071Z 177 โ yield* Deferred.succeed(releaseSave, undefined);
2026-10-24T15:12:30.4227268Z 178 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T15:12:30.4227403Z 179 โ โ if ((yield* Ref.get(saved)).length > 0) break;
2026-10-24T15:12:30.4227512Z 180 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4227643Z 181 โ โฐโโถ }
2026-10-24T15:12:30.4227698Z 182 โ
2026-10-24T15:12:30.4227749Z โฐโโโโ
2026-10-24T15:12:30.4227752Z
2026-10-24T15:12:30.4228214Z โ 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-24T15:12:30.4228361Z โญโ[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-24T15:12:30.4228488Z 306 โ yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-24T15:12:30.4228680Z 307 โ โญโโถ for (let index = 0; index < 100; index += 1) {
2026-10-24T15:12:30.4228859Z 308 โ โ const values = yield* Ref.get(saved);
2026-10-24T15:12:30.4229086Z 309 โ โ if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-24T15:12:30.4229173Z 310 โ โ break;
2026-10-24T15:12:30.4229253Z 311 โ โ }
2026-10-24T15:12:30.4229358Z 312 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4229491Z 313 โ โฐโโถ }
2026-10-24T15:12:30.4229544Z 314 โ
2026-10-24T15:12:30.4229596Z โฐโโโโ
2026-10-24T15:12:30.4229598Z
2026-10-24T15:12:30.4229802Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T15:12:30.4229934Z โญโ[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-24T15:12:30.4230014Z 2 โ AuthDiagnosticsReadScope,
2026-10-24T15:12:30.4230088Z 3 โ type AuthSessionState,
2026-10-24T15:12:30.4230173Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4230321Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T15:12:30.4230390Z 4 โ sessionGrantsScope,
2026-10-24T15:12:30.4230441Z โฐโโโโ
2026-10-24T15:12:30.4230540Z help: Consider removing this import.
2026-10-24T15:12:30.4230543Z
2026-10-24T15:12:30.4230789Z โ eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-24T15:12:30.4230901Z โญโ[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-24T15:12:30.4230954Z 55 โ
2026-10-24T15:12:30.4231053Z 56 โ function normalizeTerminalContextSelection(
2026-10-24T15:12:30.4231170Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4231363Z ยท โฐโโ 'normalizeTerminalContextSelection' is declared here
2026-10-24T15:12:30.4231451Z 57 โ selection: TerminalContextSelection,
2026-10-24T15:12:30.4231502Z โฐโโโโ
2026-10-24T15:12:30.4231605Z help: Consider removing this declaration.
2026-10-24T15:12:30.4231607Z
2026-10-24T15:12:30.4231818Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T15:12:30.4231943Z โญโ[apps/mobile/src/lib/markdownDocument.ts:259:28]
2026-10-24T15:12:30.4232045Z 258 โ visit(parser.parse(markdown), false, false);
2026-10-24T15:12:30.4232129Z 259 โ for (const edit of edits.reverse())
2026-10-24T15:12:30.4232227Z ยท โโโโโโโ
2026-10-24T15:12:30.4232445Z 260 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T15:12:30.4232533Z โฐโโโโ
2026-10-24T15:12:30.4232798Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T15:12:30.4232801Z
2026-10-24T15:12:30.4233011Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T15:12:30.4233133Z โญโ[apps/mobile/src/lib/markdownDocument.ts:290:28]
2026-10-24T15:12:30.4233215Z 289 โ visit(parser.parse(markdown));
2026-10-24T15:12:30.4233298Z 290 โ for (const edit of edits.reverse())
2026-10-24T15:12:30.4233393Z ยท โโโโโโโ
2026-10-24T15:12:30.4233573Z 291 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T15:12:30.4233633Z โฐโโโโ
2026-10-24T15:12:30.4233896Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T15:12:30.4233899Z
2026-10-24T15:12:30.4234109Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T15:12:30.4234230Z โญโ[apps/mobile/src/lib/markdownDocument.ts:344:38]
2026-10-24T15:12:30.4234311Z 343 โ visit(parser.parse(markdown));
2026-10-24T15:12:30.4234415Z 344 โ for (const lineStart of lineStarts.reverse()) {
2026-10-24T15:12:30.4234519Z ยท โโโโโโโ
2026-10-24T15:12:30.4234682Z 345 โ // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-24T15:12:30.4234735Z โฐโโโโ
2026-10-24T15:12:30.4235005Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T15:12:30.4235012Z
2026-10-24T15:12:30.4235220Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T15:12:30.4235346Z โญโ[apps/web/src/lib/announce.browser.test.ts:41:46]
2026-10-24T15:12:30.4235398Z 40 โ
2026-10-24T15:12:30.4235507Z 41 โ expect(regionTexts()).toEqual([...first].reverse());
2026-10-24T15:12:30.4235618Z ยท โโโโโโโ
2026-10-24T15:12:30.4235714Z 42 โ expect(regionTexts()).toContain("Claude");
2026-10-24T15:12:30.4235765Z โฐโโโโ
2026-10-24T15:12:30.4236031Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T15:12:30.4236036Z
2026-10-24T15:12:30.4236236Z โ eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-24T15:12:30.4236376Z โญโ[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-24T15:12:30.4236438Z 1 โ import type {
2026-10-24T15:12:30.4236503Z 2 โ EnvironmentId,
2026-10-24T15:12:30.4236579Z ยท โโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4236717Z ยท โฐโโ 'EnvironmentId' is imported here
2026-10-24T15:12:30.4236802Z 3 โ ExecutionEnvironmentCapabilities,
2026-10-24T15:12:30.4236854Z โฐโโโโ
2026-10-24T15:12:30.4236952Z help: Consider removing this import.
2026-10-24T15:12:30.4236955Z
2026-10-24T15:12:30.4237250Z โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T15:12:30.4237447Z โญโ[apps/web/src/components/pullRequest/pullRequestList.logic.ts:262:9]
2026-10-24T15:12:30.4237508Z 261 โ ): boolean {
2026-10-24T15:12:30.4237661Z 262 โ const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-24T15:12:30.4237827Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4237974Z 263 โ const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-24T15:12:30.4238026Z โฐโโโโ
2026-10-24T15:12:30.4238103Z help: Switch to `Set`
2026-10-24T15:12:30.4238106Z
2026-10-24T15:12:30.4238374Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4238513Z โญโ[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-24T15:12:30.4238571Z 339 โ
2026-10-24T15:12:30.4238674Z 340 โ const layerTest = AnalyticsService.layerTest;
2026-10-24T15:12:30.4238751Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4238884Z ยท โฐโโ 'layerTest' is declared here
2026-10-24T15:12:30.4238936Z โฐโโโโ
2026-10-24T15:12:30.4239040Z help: Consider removing this declaration.
2026-10-24T15:12:30.4239043Z
2026-10-24T15:12:30.4239231Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T15:12:30.4239346Z โญโ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T15:12:30.4239403Z 7 โ () =>
2026-10-24T15:12:30.4239470Z 8 โ Gesture.Hover()
2026-10-24T15:12:30.4239545Z ยท โโโฌโโ
2026-10-24T15:12:30.4239686Z ยท โฐโโ `Hover` may be a component
2026-10-24T15:12:30.4239763Z 9 โ .manualActivation(true)
2026-10-24T15:12:30.4239814Z โฐโโโโ
2026-10-24T15:12:30.4240098Z help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T15:12:30.4240549Z note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T15:12:30.4240552Z
2026-10-24T15:12:30.4240784Z โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-24T15:12:30.4240922Z โญโ[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-24T15:12:30.4241049Z 984 โ const changedBeforeDecline = draftChangedSinceSend();
2026-10-24T15:12:30.4241295Z 985 โ โญโโถ const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-24T15:12:30.4241415Z 986 โ โ (approval) => approval.requestId,
2026-10-24T15:12:30.4241548Z 987 โ โฐโโถ );
2026-10-24T15:12:30.4241687Z 988 โ const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-24T15:12:30.4241739Z โฐโโโโ
2026-10-24T15:12:30.4241814Z help: Switch to `Set`
2026-10-24T15:12:30.4241818Z
2026-10-24T15:12:30.4242028Z โ eslint(no-unused-vars): Function 'summarizePayload' is declared but never used.
2026-10-24T15:12:30.4242222Z โญโ[packages/provider-acp/src/server/nativeLogging.ts:22:10]
2026-10-24T15:12:30.4242307Z 21 โ
2026-10-24T15:12:30.4242463Z 22 โ function summarizePayload(payload: unknown): Readonly<Record<string, unknown>> {
2026-10-24T15:12:30.4242550Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4242700Z ยท โฐโโ 'summarizePayload' is declared here
2026-10-24T15:12:30.4242806Z 23 โ if (payload === null) return { valueType: "null" };
2026-10-24T15:12:30.4242858Z โฐโโโโ
2026-10-24T15:12:30.4242960Z help: Consider removing this declaration.
2026-10-24T15:12:30.4242962Z
2026-10-24T15:12:30.4243220Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4243344Z โญโ[apps/server/src/serverRuntimeStartup.ts:728:7]
2026-10-24T15:12:30.4243404Z 727 โ
2026-10-24T15:12:30.4243486Z 728 โ const layer = layerWithOptions();
2026-10-24T15:12:30.4243579Z ยท โโโฌโโ
2026-10-24T15:12:30.4243704Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4243756Z โฐโโโโ
2026-10-24T15:12:30.4243856Z help: Consider removing this declaration.
2026-10-24T15:12:30.4243859Z
2026-10-24T15:12:30.4244050Z โ eslint(require-yield): This generator function does not have `yield`
2026-10-24T15:12:30.4244195Z โญโ[packages/provider-acp/src/server/mcpOverAcpBridge.ts:81:78]
2026-10-24T15:12:30.4244252Z 80 โ
2026-10-24T15:12:30.4244524Z 81 โ โญโโถ export const makeAcpMcpOverAcpBridge = Effect.fn("AcpMcpOverAcpBridge.make")(function* (
2026-10-24T15:12:30.4244650Z 82 โ โ options: AcpMcpOverAcpBridgeOptions,
2026-10-24T15:12:30.4244776Z 83 โ โ ): Effect.fn.Return<AcpMcpOverAcpBridge> {
2026-10-24T15:12:30.4244945Z 84 โ โ const fetchImplementation = options.fetchImplementation ?? fetch;
2026-10-24T15:12:30.4245078Z 85 โ โ const connections = new Map<string, Connection>();
2026-10-24T15:12:30.4245148Z 86 โ โ
2026-10-24T15:12:30.4245363Z 87 โ โ const connectionFor = (connectionId: string): Effect.Effect<Connection, AcpMcpOverAcpError> =>
2026-10-24T15:12:30.4245464Z 88 โ โ Effect.suspend(() => {
2026-10-24T15:12:30.4245598Z 89 โ โ const connection = connections.get(connectionId);
2026-10-24T15:12:30.4245709Z 90 โ โ return connection === undefined
2026-10-24T15:12:30.4245930Z 91 โ โ ? Effect.fail(new AcpMcpOverAcpError(`Unknown MCP-over-ACP connection "${connectionId}".`))
2026-10-24T15:12:30.4246044Z 92 โ โ : Effect.succeed(connection);
2026-10-24T15:12:30.4246119Z 93 โ โ });
2026-10-24T15:12:30.4246188Z 94 โ โ
2026-10-24T15:12:30.4246275Z 95 โ โ const send = (
2026-10-24T15:12:30.4246378Z 96 โ โ connection: Connection,
2026-10-24T15:12:30.4246469Z 97 โ โ message: unknown,
2026-10-24T15:12:30.4246627Z 98 โ โ ): Effect.Effect<ReadonlyArray<unknown>, AcpMcpOverAcpError> =>
2026-10-24T15:12:30.4246742Z 99 โ โ connection.mutex.withPermits(1)(
2026-10-24T15:12:30.4246848Z 100 โ โ Effect.gen(function* () {
2026-10-24T15:12:30.4247028Z 101 โ โ const body = JSON.stringify(message);
2026-10-24T15:12:30.4247203Z 102 โ โ if (Buffer.byteLength(body) > MAX_MESSAGE_BYTES) {
2026-10-24T15:12:30.4247419Z 103 โ โ return yield* Effect.fail(new AcpMcpOverAcpError("MCP-over-ACP message exceeds 8 MiB."));
2026-10-24T15:12:30.4247497Z 104 โ โ }
2026-10-24T15:12:30.4247630Z 105 โ โ const response = yield* Effect.tryPromise({
2026-10-24T15:12:30.4247728Z 106 โ โ try: (signal) =>
2026-10-24T15:12:30.4247861Z 107 โ โ fetchImplementation(options.endpoint, {
2026-10-24T15:12:30.4247962Z 108 โ โ method: "POST",
2026-10-24T15:12:30.4248055Z 109 โ โ signal,
2026-10-24T15:12:30.4248156Z 110 โ โ headers: {
2026-10-24T15:12:30.4248287Z 111 โ โ "content-type": "application/json",
2026-10-24T15:12:30.4248431Z 112 โ โ accept: "application/json, text/event-stream",
2026-10-24T15:12:30.4248563Z 113 โ โ authorization: options.authorization,
2026-10-24T15:12:30.4248689Z 114 โ โ ...(connection.sessionId === null
2026-10-24T15:12:30.4248782Z 115 โ โ ? {}
2026-10-24T15:12:30.4248925Z 116 โ โ : { "mcp-session-id": connection.sessionId }),
2026-10-24T15:12:30.4249059Z 117 โ โ ...(connection.protocolVersion === null
2026-10-24T15:12:30.4249155Z 118 โ โ ? {}
2026-10-24T15:12:30.4249324Z 119 โ โ : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-24T15:12:30.4249411Z 120 โ โ },
2026-10-24T15:12:30.4249502Z 121 โ โ body,
2026-10-24T15:12:30.4249585Z 122 โ โ }),
2026-10-24T15:12:30.4249687Z 123 โ โ catch: bridgeError,
2026-10-24T15:12:30.4249767Z 124 โ โ });
2026-10-24T15:12:30.4250057Z 125 โ โ connection.sessionId = response.headers.get("mcp-session-id") ?? connection.sessionId;
2026-10-24T15:12:30.4250156Z 126 โ โ if (!response.ok) {
2026-10-24T15:12:30.4250264Z 127 โ โ yield* Effect.promise(
2026-10-24T15:12:30.4250455Z 128 โ โ () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-24T15:12:30.4250540Z 129 โ โ );
2026-10-24T15:12:30.4250650Z 130 โ โ return yield* Effect.fail(
2026-10-24T15:12:30.4250863Z 131 โ โ new AcpMcpOverAcpError(`T3 Code MCP endpoint responded with HTTP ${response.status}.`),
2026-10-24T15:12:30.4250946Z 132 โ โ );
2026-10-24T15:12:30.4251025Z 133 โ โ }
2026-10-24T15:12:30.4251236Z 134 โ โ const payloads = [...(yield* Stream.runCollect(responsePayloads(response, bridgeError)))];
2026-10-24T15:12:30.4251356Z 135 โ โ for (const payload of payloads) {
2026-10-24T15:12:30.4251648Z 136 โ โ connection.protocolVersion = protocolVersionOf(payload) ?? connection.protocolVersion;
2026-10-24T15:12:30.4251774Z 137 โ โ }
2026-10-24T15:12:30.4251874Z 138 โ โ return payloads;
2026-10-24T15:12:30.4251996Z 139 โ โ }).pipe(Effect.mapError(bridgeError)),
2026-10-24T15:12:30.4252072Z 140 โ โ );
2026-10-24T15:12:30.4252142Z 141 โ โ
2026-10-24T15:12:30.4252318Z 142 โ โ const disconnect = Effect.fn("mcpOverAcpBridge.disconnect")(function* (
2026-10-24T15:12:30.4252442Z 143 โ โ request: AcpSchema.DisconnectMcpRequest,
2026-10-24T15:12:30.4252628Z 144 โ โ ): Effect.fn.Return<AcpSchema.DisconnectMcpResponse, AcpMcpOverAcpError> {
2026-10-24T15:12:30.4252797Z 145 โ โ const connection = yield* connectionFor(request.connectionId);
2026-10-24T15:12:30.4252927Z 146 โ โ connections.delete(request.connectionId);
2026-10-24T15:12:30.4253050Z 147 โ โ const sessionId = connection.sessionId;
2026-10-24T15:12:30.4253152Z 148 โ โ if (sessionId !== null) {
2026-10-24T15:12:30.4253285Z 149 โ โ const response = yield* Effect.tryPromise({
2026-10-24T15:12:30.4253381Z 150 โ โ try: (signal) =>
2026-10-24T15:12:30.4253510Z 151 โ โ fetchImplementation(options.endpoint, {
2026-10-24T15:12:30.4253638Z 152 โ โ method: "DELETE",
2026-10-24T15:12:30.4253728Z 153 โ โ signal,
2026-10-24T15:12:30.4253823Z 154 โ โ headers: {
2026-10-24T15:12:30.4253958Z 155 โ โ authorization: options.authorization,
2026-10-24T15:12:30.4254081Z 156 โ โ "mcp-session-id": sessionId,
2026-10-24T15:12:30.4254215Z 157 โ โ ...(connection.protocolVersion === null
2026-10-24T15:12:30.4254307Z 158 โ โ ? {}
2026-10-24T15:12:30.4254470Z 159 โ โ : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-24T15:12:30.4254556Z 160 โ โ },
2026-10-24T15:12:30.4254639Z 161 โ โ }),
2026-10-24T15:12:30.4254740Z 162 โ โ catch: bridgeError,
2026-10-24T15:12:30.4254817Z 163 โ โ });
2026-10-24T15:12:30.4254951Z 164 โ โ if (!response.ok && response.status !== 404) {
2026-10-24T15:12:30.4255069Z 165 โ โ return yield* Effect.fail(
2026-10-24T15:12:30.4255182Z 166 โ โ new AcpMcpOverAcpError(
2026-10-24T15:12:30.4255366Z 167 โ โ `T3 Code MCP endpoint rejected disconnect with HTTP ${response.status}.`,
2026-10-24T15:12:30.4255447Z 168 โ โ ),
2026-10-24T15:12:30.4255526Z 169 โ โ );
2026-10-24T15:12:30.4255603Z 170 โ โ }
2026-10-24T15:12:30.4255706Z 171 โ โ yield* Effect.promise(
2026-10-24T15:12:30.4255885Z 172 โ โ () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-24T15:12:30.4255964Z 173 โ โ );
2026-10-24T15:12:30.4256041Z 174 โ โ }
2026-10-24T15:12:30.4256186Z 175 โ โ return {};
2026-10-24T15:12:30.4256294Z 176 โ โ });
2026-10-24T15:12:30.4256363Z 177 โ โ
2026-10-24T15:12:30.4256442Z 178 โ โ return {
2026-10-24T15:12:30.4256614Z 179 โ โ connect: Effect.fn("mcpOverAcpBridge.connect")(function* (request) {
2026-10-24T15:12:30.4256736Z 180 โ โ if (request.serverId !== "t3-code") {
2026-10-24T15:12:30.4256845Z 181 โ โ return yield* Effect.fail(
2026-10-24T15:12:30.4257031Z 182 โ โ new AcpMcpOverAcpError(`Unknown ACP MCP server "${request.serverId}".`),
2026-10-24T15:12:30.4257108Z 183 โ โ );
2026-10-24T15:12:30.4257185Z 184 โ โ }
2026-10-24T15:12:30.4257320Z 185 โ โ if (connections.size >= MAX_CONNECTIONS) {
2026-10-24T15:12:30.4257532Z 186 โ โ return yield* Effect.fail(new AcpMcpOverAcpError("Too many MCP-over-ACP connections."));
2026-10-24T15:12:30.4257607Z 187 โ โ }
2026-10-24T15:12:30.4257762Z 188 โ โ const connectionId = yield* options.allocateConnectionId;
2026-10-24T15:12:30.4257877Z 189 โ โ connections.set(connectionId, {
2026-10-24T15:12:30.4257995Z 190 โ โ mutex: yield* Semaphore.make(1),
2026-10-24T15:12:30.4258093Z 191 โ โ sessionId: null,
2026-10-24T15:12:30.4258199Z 192 โ โ protocolVersion: null,
2026-10-24T15:12:30.4258299Z 193 โ โ nextRequestId: 0,
2026-10-24T15:12:30.4258377Z 194 โ โ });
2026-10-24T15:12:30.4258486Z 195 โ โ return { connectionId };
2026-10-24T15:12:30.4258564Z 196 โ โ }),
2026-10-24T15:12:30.4258738Z 197 โ โ message: Effect.fn("mcpOverAcpBridge.message")(function* (request) {
2026-10-24T15:12:30.4258901Z 198 โ โ const connection = yield* connectionFor(request.connectionId);
2026-10-24T15:12:30.4259025Z 199 โ โ const id = ++connection.nextRequestId;
2026-10-24T15:12:30.4259151Z 200 โ โ const payloads = yield* send(connection, {
2026-10-24T15:12:30.4259249Z 201 โ โ jsonrpc: "2.0",
2026-10-24T15:12:30.4259330Z 202 โ โ id,
2026-10-24T15:12:30.4259434Z 203 โ โ method: request.method,
2026-10-24T15:12:30.4259650Z 204 โ โ ...(request.params == null ? {} : { params: request.params }),
2026-10-24T15:12:30.4259764Z 205 โ โ });
2026-10-24T15:12:30.4259951Z 206 โ โ const response = payloads.find((payload) => asEnvelope(payload)?.id === id);
2026-10-24T15:12:30.4260073Z 207 โ โ const envelope = asEnvelope(response);
2026-10-24T15:12:30.4260173Z 208 โ โ if (envelope === null) {
2026-10-24T15:12:30.4260282Z 209 โ โ return yield* Effect.fail(
2026-10-24T15:12:30.4260468Z 210 โ โ new AcpMcpOverAcpError("MCP server did not return a matching response."),
2026-10-24T15:12:30.4260547Z 211 โ โ );
2026-10-24T15:12:30.4260621Z 212 โ โ }
2026-10-24T15:12:30.4260744Z 213 โ โ if (envelope.error !== undefined) {
2026-10-24T15:12:30.4260943Z 214 โ โ return yield* Effect.fail(new AcpMcpOverAcpError(errorMessage(envelope.error)));
2026-10-24T15:12:30.4261018Z 215 โ โ }
2026-10-24T15:12:30.4261189Z 216 โ โ return (envelope.result ?? null) as AcpSchema.MessageMcpResponse;
2026-10-24T15:12:30.4261263Z 217 โ โ }),
2026-10-24T15:12:30.4261456Z 218 โ โ notification: Effect.fn("mcpOverAcpBridge.notification")(function* (request) {
2026-10-24T15:12:30.4261618Z 219 โ โ const connection = yield* connectionFor(request.connectionId);
2026-10-24T15:12:30.4261721Z 220 โ โ yield* send(connection, {
2026-10-24T15:12:30.4261818Z 221 โ โ jsonrpc: "2.0",
2026-10-24T15:12:30.4261927Z 222 โ โ method: request.method,
2026-10-24T15:12:30.4262091Z 223 โ โ ...(request.params == null ? {} : { params: request.params }),
2026-10-24T15:12:30.4262168Z 224 โ โ });
2026-10-24T15:12:30.4262244Z 225 โ โ }),
2026-10-24T15:12:30.4262330Z 226 โ โ disconnect,
2026-10-24T15:12:30.4262439Z 227 โ โ dispose: Effect.suspend(() =>
2026-10-24T15:12:30.4262536Z 228 โ โ Effect.forEach(
2026-10-24T15:12:30.4262641Z 229 โ โ [...connections.keys()],
2026-10-24T15:12:30.4262813Z 230 โ โ (connectionId) => disconnect({ connectionId }).pipe(Effect.ignore),
2026-10-24T15:12:30.4262913Z 231 โ โ { discard: true },
2026-10-24T15:12:30.4262995Z 232 โ โ ),
2026-10-24T15:12:30.4263074Z 233 โ โ ),
2026-10-24T15:12:30.4263148Z 234 โ โ };
2026-10-24T15:12:30.4263276Z 235 โ โฐโโถ });
2026-10-24T15:12:30.4263329Z โฐโโโโ
2026-10-24T15:12:30.4263635Z help: Add a `yield` expression inside the generator body, or convert it to a regular function if iteration behavior is not needed.
2026-10-24T15:12:30.4263638Z
2026-10-24T15:12:30.4264113Z โ 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-24T15:12:30.4264273Z โญโ[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-24T15:12:30.4264386Z 27 โ ) {
2026-10-24T15:12:30.4264618Z 28 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4264763Z 29 โ โ const available = yield* service.peek(workspaceRoot);
2026-10-24T15:12:30.4264890Z 30 โ โ if (predicate(available)) return available;
2026-10-24T15:12:30.4264990Z 31 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4265111Z 32 โ โฐโโถ }
2026-10-24T15:12:30.4265291Z 33 โ return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-24T15:12:30.4265344Z โฐโโโโ
2026-10-24T15:12:30.4265347Z
2026-10-24T15:12:30.4265822Z โ 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-24T15:12:30.4265960Z โญโ[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-24T15:12:30.4266015Z 93 โ ) {
2026-10-24T15:12:30.4266214Z 94 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4266388Z 95 โ โ const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-24T15:12:30.4266509Z 96 โ โ if (predicate(project)) return project;
2026-10-24T15:12:30.4266606Z 97 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4266731Z 98 โ โฐโโถ }
2026-10-24T15:12:30.4266888Z 99 โ return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-24T15:12:30.4266944Z โฐโโโโ
2026-10-24T15:12:30.4266947Z
2026-10-24T15:12:30.4267410Z โ 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-24T15:12:30.4267549Z โญโ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-24T15:12:30.4267683Z 180 โ it("sends a message without the records the wire cannot carry", () => {
2026-10-24T15:12:30.4267865Z 181 โ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-24T15:12:30.4267976Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4268040Z 182 โ version: 1,
2026-10-24T15:12:30.4268092Z โฐโโโโ
2026-10-24T15:12:30.4268102Z
2026-10-24T15:12:30.4268389Z โ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4268534Z โญโ[apps/server/src/orchestration-v2/Orchestrator.ts:12380:7]
2026-10-24T15:12:30.4268589Z 12379 โ
2026-10-24T15:12:30.4268729Z 12380 โ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-24T15:12:30.4268815Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4268967Z ยท โฐโโ 'layerUnavailable' is declared here
2026-10-24T15:12:30.4269036Z 12381 โ OrchestratorV2,
2026-10-24T15:12:30.4269092Z โฐโโโโ
2026-10-24T15:12:30.4269199Z help: Consider removing this declaration.
2026-10-24T15:12:30.4269202Z
2026-10-24T15:12:30.4269463Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T15:12:30.4269608Z โญโ[packages/contracts/src/rpc.ts:297:8]
2026-10-24T15:12:30.4269677Z 296 โ } from "./device.ts";
2026-10-24T15:12:30.4269772Z 297 โ import {} from "./previewAutomation.ts";
2026-10-24T15:12:30.4269842Z ยท โโ
2026-10-24T15:12:30.4269901Z 298 โ import {
2026-10-24T15:12:30.4269953Z โฐโโโโ
2026-10-24T15:12:30.4270034Z help: Remove empty braces
2026-10-24T15:12:30.4270037Z
2026-10-24T15:12:30.4270182Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4270336Z โญโ[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
2026-10-24T15:12:30.4270397Z 493 โ >
2026-10-24T15:12:30.4270477Z 494 โ {props.children(close)}
2026-10-24T15:12:30.4270575Z ยท โโโฌโโ
2026-10-24T15:12:30.4270736Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4270816Z 495 โ </ReanimatedSwipeable>
2026-10-24T15:12:30.4270866Z โฐโโโโ
2026-10-24T15:12:30.4271340Z 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-24T15:12:30.4271634Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4271637Z
2026-10-24T15:12:30.4271832Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4271983Z โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T15:12:30.4272077Z 35 โ <T3SourceTextRunNativeComponent
2026-10-24T15:12:30.4272141Z 36 โ key={index}
2026-10-24T15:12:30.4272219Z ยท โโโโโโโโโโโ
2026-10-24T15:12:30.4272293Z 37 โ style={flattenedStyle}
2026-10-24T15:12:30.4272345Z โฐโโโโ
2026-10-24T15:12:30.4272490Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4272494Z
2026-10-24T15:12:30.4272722Z โ eslint(no-unused-vars): Type 'EnvironmentThreadSearchMatch' is imported but never used.
2026-10-24T15:12:30.4272851Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:15:8]
2026-10-24T15:12:30.4272922Z 14 โ threadSearchMatchKey,
2026-10-24T15:12:30.4273015Z 15 โ type EnvironmentThreadSearchMatch,
2026-10-24T15:12:30.4273123Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-24T15:12:30.4273301Z ยท โฐโโ 'EnvironmentThreadSearchMatch' is imported here
2026-10-24T15:12:30.4273410Z 16 โ } from "@t3tools/client-runtime/state/thread-search";
2026-10-24T15:12:30.4273462Z โฐโโโโ
2026-10-24T15:12:30.4273588Z help: Consider removing this import.
2026-10-24T15:12:30.4273592Z
2026-10-24T15:12:30.4273792Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4273923Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:527:25]
2026-10-24T15:12:30.4274055Z 526 โ // range) the boundary string is identical and the chain would die.
2026-10-24T15:12:30.4274145Z 527 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-24T15:12:30.4274303Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4274502Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-24T15:12:30.4274640Z 528 โ const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-24T15:12:30.4274690Z โฐโโโโ
2026-10-24T15:12:30.4274994Z 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-24T15:12:30.4275309Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4275312Z
2026-10-24T15:12:30.4275482Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4275615Z โญโ[apps/mobile/src/features/home/HomeScreen.tsx:518:53]
2026-10-24T15:12:30.4275706Z 517 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-24T15:12:30.4275869Z 518 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-24T15:12:30.4275992Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4276160Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4276238Z 519 โ const id = setTimeout(() => {
2026-10-24T15:12:30.4276290Z โฐโโโโ
2026-10-24T15:12:30.4276579Z 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-24T15:12:30.4276882Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4276888Z
2026-10-24T15:12:30.4277082Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T15:12:30.4277256Z โญโ[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:88:15]
2026-10-24T15:12:30.4277319Z 87 โ <li
2026-10-24T15:12:30.4277408Z 88 โ key={`${index}:${check.name}`}
2026-10-24T15:12:30.4277518Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4277669Z 89 โ className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-24T15:12:30.4277721Z โฐโโโโ
2026-10-24T15:12:30.4277867Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T15:12:30.4277870Z
2026-10-24T15:12:30.4278137Z โ unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-24T15:12:30.4278285Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-24T15:12:30.4278439Z 11 โ addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-24T15:12:30.4278518Z 12 โ this.onmessage = listener;
2026-10-24T15:12:30.4278599Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4278655Z 13 โ }
2026-10-24T15:12:30.4278707Z โฐโโโโ
2026-10-24T15:12:30.4279027Z help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-24T15:12:30.4279030Z
2026-10-24T15:12:30.4279236Z โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T15:12:30.4279514Z โญโ[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-24T15:12:30.4279626Z 15 โ constructor() {
2026-10-24T15:12:30.4279692Z 16 โ source = this;
2026-10-24T15:12:30.4279764Z ยท โโโโโโ
2026-10-24T15:12:30.4279819Z 17 โ }
2026-10-24T15:12:30.4279871Z โฐโโโโ
2026-10-24T15:12:30.4280147Z 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-24T15:12:30.4280150Z
2026-10-24T15:12:30.4280611Z โ 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-24T15:12:30.4280742Z โญโ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-24T15:12:30.4280811Z 38 โ JSON.stringify(
2026-10-24T15:12:30.4280930Z 39 โ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-24T15:12:30.4281027Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4281093Z 40 โ { name: "a" },
2026-10-24T15:12:30.4281144Z โฐโโโโ
2026-10-24T15:12:30.4281147Z
2026-10-24T15:12:30.4281307Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4281479Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T15:12:30.4281535Z 90 โ }) {
2026-10-24T15:12:30.4281647Z 91 โ const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T15:12:30.4281721Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4281861Z ยท โฐโโ `rotation` originates here
2026-10-24T15:12:30.4281933Z 92 โ useLayoutEffect(() => {
2026-10-24T15:12:30.4282075Z 93 โ rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T15:12:30.4282146Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4282278Z ยท โฐโโ `rotation` cannot be modified
2026-10-24T15:12:30.4282353Z 94 โ }, [props.hidden, rotation]);
2026-10-24T15:12:30.4282406Z โฐโโโโ
2026-10-24T15:12:30.4282674Z 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-24T15:12:30.4282986Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4282988Z
2026-10-24T15:12:30.4283204Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4283408Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T15:12:30.4283503Z 266 โ const variant = props.variant ?? "plain";
2026-10-24T15:12:30.4283667Z 267 โ const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T15:12:30.4283757Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4283906Z ยท โฐโโ `loadingVisibility` originates here
2026-10-24T15:12:30.4283976Z 268 โ useLayoutEffect(() => {
2026-10-24T15:12:30.4284135Z 269 โ loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T15:12:30.4284218Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4284366Z ยท โฐโโ `loadingVisibility` cannot be modified
2026-10-24T15:12:30.4284467Z 270 โ }, [loadingVisibility, props.loading]);
2026-10-24T15:12:30.4284523Z โฐโโโโ
2026-10-24T15:12:30.4284790Z 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-24T15:12:30.4285099Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4285103Z
2026-10-24T15:12:30.4285259Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4285429Z โญโ[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T15:12:30.4285485Z 325 โ }) {
2026-10-24T15:12:30.4285648Z 326 โ const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T15:12:30.4285741Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4285897Z ยท โฐโโ `recordingVisibility` originates here
2026-10-24T15:12:30.4285967Z 327 โ useLayoutEffect(() => {
2026-10-24T15:12:30.4286156Z 328 โ recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T15:12:30.4286241Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4286397Z ยท โฐโโ `recordingVisibility` cannot be modified
2026-10-24T15:12:30.4286489Z 329 โ }, [props.phase, recordingVisibility]);
2026-10-24T15:12:30.4286541Z โฐโโโโ
2026-10-24T15:12:30.4286805Z 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-24T15:12:30.4287116Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4287123Z
2026-10-24T15:12:30.4287595Z โ 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-24T15:12:30.4287732Z โญโ[packages/client-runtime/src/rpc/session.test.ts:226:3]
2026-10-24T15:12:30.4287789Z 225 โ ) {
2026-10-24T15:12:30.4287996Z 226 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4288111Z 227 โ โ const socket = sockets[index];
2026-10-24T15:12:30.4288202Z 228 โ โ if (socket) {
2026-10-24T15:12:30.4288361Z 229 โ โ return socket;
2026-10-24T15:12:30.4288464Z 230 โ โ }
2026-10-24T15:12:30.4288568Z 231 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4288696Z 232 โ โฐโโถ }
2026-10-24T15:12:30.4288871Z 233 โ return yield* Effect.die(new Error("Expected the RPC protocol to create a websocket."));
2026-10-24T15:12:30.4288924Z โฐโโโโ
2026-10-24T15:12:30.4288926Z
2026-10-24T15:12:30.4289394Z โ 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-24T15:12:30.4289529Z โญโ[packages/client-runtime/src/rpc/session.test.ts:240:3]
2026-10-24T15:12:30.4289592Z 239 โ ) {
2026-10-24T15:12:30.4289797Z 240 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4290215Z 241 โ โ const request = socket.sent.map((message) => decodeJson(message)).filter(isRpcRequest)[index];
2026-10-24T15:12:30.4290308Z 242 โ โ if (request) {
2026-10-24T15:12:30.4292032Z 243 โ โ return request;
2026-10-24T15:12:30.4292112Z 244 โ โ }
2026-10-24T15:12:30.4292216Z 245 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4292342Z 246 โ โฐโโถ }
2026-10-24T15:12:30.4292511Z 247 โ return yield* Effect.die(new Error("Expected the RPC protocol to send a request."));
2026-10-24T15:12:30.4292562Z โฐโโโโ
2026-10-24T15:12:30.4292574Z
2026-10-24T15:12:30.4292728Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4292897Z โญโ[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T15:12:30.4292980Z 26 โ const latestInput = useRef(input);
2026-10-24T15:12:30.4293056Z 27 โ latestInput.current = input;
2026-10-24T15:12:30.4293169Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T15:12:30.4293355Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T15:12:30.4293470Z ยท โฐโโ This value is a ref
2026-10-24T15:12:30.4293576Z 28 โ const mounted = useRef(true);
2026-10-24T15:12:30.4293627Z โฐโโโโ
2026-10-24T15:12:30.4294107Z 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-24T15:12:30.4294407Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4294410Z
2026-10-24T15:12:30.4294567Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4294733Z โญโ[apps/mobile/src/features/voice-input/GlobalVoiceInputControl.tsx:68:5]
2026-10-24T15:12:30.4294838Z 65 โ const [expanded, setExpanded] = useState(false);
2026-10-24T15:12:30.4294922Z 66 โ const progress = useSharedValue(0);
2026-10-24T15:12:30.4294996Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4295217Z ยท โฐโโ `progress` originates here
2026-10-24T15:12:30.4295323Z 67 โ useEffect(() => {
2026-10-24T15:12:30.4295447Z 68 โ progress.value = withTiming(expanded ? 1 : 0, MORPH_TIMING);
2026-10-24T15:12:30.4295518Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4295650Z ยท โฐโโ `progress` cannot be modified
2026-10-24T15:12:30.4295722Z 69 โ }, [expanded, progress]);
2026-10-24T15:12:30.4295774Z โฐโโโโ
2026-10-24T15:12:30.4296042Z 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-24T15:12:30.4296349Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4296354Z
2026-10-24T15:12:30.4296826Z โ 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-24T15:12:30.4296965Z โญโ[packages/client-runtime/src/rpc/client.test.ts:131:9]
2026-10-24T15:12:30.4297027Z 130 โ ) {
2026-10-24T15:12:30.4297239Z 131 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4297363Z 132 โ โ if (subscriptions.length >= count) {
2026-10-24T15:12:30.4297454Z 133 โ โ return;
2026-10-24T15:12:30.4297536Z 134 โ โ }
2026-10-24T15:12:30.4297644Z 135 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4297783Z 136 โ โฐโโถ }
2026-10-24T15:12:30.4297952Z 137 โ return yield* Effect.die(new Error(`Expected ${count} durable subscriptions.`));
2026-10-24T15:12:30.4298005Z โฐโโโโ
2026-10-24T15:12:30.4298007Z
2026-10-24T15:12:30.4298471Z โ 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-24T15:12:30.4298604Z โญโ[packages/client-runtime/src/rpc/client.test.ts:252:7]
2026-10-24T15:12:30.4298766Z 251 โ yield* SubscriptionRef.set(activeSession, Option.some(session(firstClient)));
2026-10-24T15:12:30.4299027Z 252 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 1; attempt += 1) {
2026-10-24T15:12:30.4299136Z 253 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4299269Z 254 โ โฐโโถ }
2026-10-24T15:12:30.4299392Z 255 โ yield* SubscriptionRef.set(activeSession, Option.none());
2026-10-24T15:12:30.4299444Z โฐโโโโ
2026-10-24T15:12:30.4299447Z
2026-10-24T15:12:30.4299910Z โ 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-24T15:12:30.4300040Z โญโ[packages/client-runtime/src/rpc/client.test.ts:258:7]
2026-10-24T15:12:30.4300096Z 257 โ
2026-10-24T15:12:30.4300404Z 258 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T15:12:30.4300542Z 259 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4300672Z 260 โ โฐโโถ }
2026-10-24T15:12:30.4300778Z 261 โ yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T15:12:30.4300829Z โฐโโโโ
2026-10-24T15:12:30.4300832Z
2026-10-24T15:12:30.4301293Z โ 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-24T15:12:30.4301422Z โญโ[packages/client-runtime/src/rpc/client.test.ts:322:7]
2026-10-24T15:12:30.4301483Z 321 โ );
2026-10-24T15:12:30.4301742Z 322 โ โญโโถ for (let attempt = 0; attempt < 100 && observedFailures.length < 1; attempt += 1) {
2026-10-24T15:12:30.4301849Z 323 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4301978Z 324 โ โฐโโถ }
2026-10-24T15:12:30.4302032Z 325 โ
2026-10-24T15:12:30.4302083Z โฐโโโโ
2026-10-24T15:12:30.4302087Z
2026-10-24T15:12:30.4302550Z โ 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-24T15:12:30.4302681Z โญโ[packages/client-runtime/src/rpc/client.test.ts:330:7]
2026-10-24T15:12:30.4302849Z 329 โ yield* SubscriptionRef.set(activeSession, Option.some(session(secondClient)));
2026-10-24T15:12:30.4303101Z 330 โ โญโโถ for (let attempt = 0; attempt < 100 && subscriptions.length < 2; attempt += 1) {
2026-10-24T15:12:30.4303204Z 331 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4303334Z 332 โ โฐโโถ }
2026-10-24T15:12:30.4303438Z 333 โ yield* Fiber.interrupt(subscriptionFiber);
2026-10-24T15:12:30.4303490Z โฐโโโโ
2026-10-24T15:12:30.4303492Z
2026-10-24T15:12:30.4303676Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4303838Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T15:12:30.4303996Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T15:12:30.4304124Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T15:12:30.4304250Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T15:12:30.4304425Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4304543Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T15:12:30.4304594Z โฐโโโโ
2026-10-24T15:12:30.4305065Z 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-24T15:12:30.4305414Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4305473Z
2026-10-24T15:12:30.4305617Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4305775Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T15:12:30.4305829Z 125 โ
2026-10-24T15:12:30.4305935Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4306024Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4306175Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4306279Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4306329Z โฐโโโโ
2026-10-24T15:12:30.4306803Z 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-24T15:12:30.4307097Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4307100Z
2026-10-24T15:12:30.4307243Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4307399Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T15:12:30.4307451Z 125 โ
2026-10-24T15:12:30.4307557Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4307644Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4307795Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4307901Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4307955Z โฐโโโโ
2026-10-24T15:12:30.4308423Z 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-24T15:12:30.4308715Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4308718Z
2026-10-24T15:12:30.4308859Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4309015Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T15:12:30.4309067Z 125 โ
2026-10-24T15:12:30.4309173Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4309290Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4309461Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4309562Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4309614Z โฐโโโโ
2026-10-24T15:12:30.4310079Z 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-24T15:12:30.4310367Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4310371Z
2026-10-24T15:12:30.4310566Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4310758Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T15:12:30.4310810Z 125 โ
2026-10-24T15:12:30.4310915Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4311026Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4311193Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4311293Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4311344Z โฐโโโโ
2026-10-24T15:12:30.4311817Z 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-24T15:12:30.4312110Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4312112Z
2026-10-24T15:12:30.4312254Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4312410Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T15:12:30.4312521Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4312713Z 127 โ โญโโถ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4312890Z 128 โ โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T15:12:30.4313015Z 129 โ โ onStatus: (status: RecordingStatus) => {
2026-10-24T15:12:30.4313174Z 130 โ โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T15:12:30.4313295Z 131 โ โ isFinished: status.isFinished,
2026-10-24T15:12:30.4313472Z 132 โ โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T15:12:30.4313605Z 133 โ โ error: status.error,
2026-10-24T15:12:30.4313702Z 134 โ โ url: status.url,
2026-10-24T15:12:30.4313782Z 135 โ โ });
2026-10-24T15:12:30.4313860Z 136 โ โ },
2026-10-24T15:12:30.4314058Z 137 โ โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T15:12:30.4314166Z 138 โ โ selectInput: (inputs) => {
2026-10-24T15:12:30.4314382Z 139 โ โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T15:12:30.4314560Z 140 โ โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T15:12:30.4314728Z 141 โ โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T15:12:30.4314867Z 142 โ โ const order = rememberMicrophones(known, inputs);
2026-10-24T15:12:30.4314967Z 143 โ โ if (order !== known) {
2026-10-24T15:12:30.4315107Z 144 โ โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T15:12:30.4315221Z 145 โ โ transform: (current) => ({
2026-10-24T15:12:30.4315427Z 146 โ โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T15:12:30.4315519Z 147 โ โ }),
2026-10-24T15:12:30.4315603Z 148 โ โ });
2026-10-24T15:12:30.4315682Z 149 โ โ }
2026-10-24T15:12:30.4315822Z 150 โ โ return preferredMicrophoneInput(inputs, order);
2026-10-24T15:12:30.4315899Z 151 โ โ },
2026-10-24T15:12:30.4316030Z 152 โ โโโถ });
2026-10-24T15:12:30.4316268Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T15:12:30.4316354Z 153 โ recorderRef.current = recorder;
2026-10-24T15:12:30.4316406Z โฐโโโโ
2026-10-24T15:12:30.4316881Z 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-24T15:12:30.4317176Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4317178Z
2026-10-24T15:12:30.4317322Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4317482Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T15:12:30.4317538Z 152 โ });
2026-10-24T15:12:30.4317619Z 153 โ recorderRef.current = recorder;
2026-10-24T15:12:30.4317732Z ยท โโโโโโฌโโโโโโโโโโฌโโโ
2026-10-24T15:12:30.4317922Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T15:12:30.4318042Z ยท โฐโโ This value is a ref
2026-10-24T15:12:30.4318145Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T15:12:30.4318197Z โฐโโโโ
2026-10-24T15:12:30.4318665Z 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-24T15:12:30.4318956Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4318958Z
2026-10-24T15:12:30.4319100Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4319310Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T15:12:30.4319430Z 153 โ recorderRef.current = recorder;
2026-10-24T15:12:30.4319626Z 154 โ โญโโถ sessionRef.current = new VoiceInputSession({
2026-10-24T15:12:30.4319713Z 155 โ โ recorder,
2026-10-24T15:12:30.4319842Z 156 โ โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T15:12:30.4319959Z 157 โ โ requestPermission: async () => {
2026-10-24T15:12:30.4320125Z 158 โ โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T15:12:30.4320319Z 159 โ โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T15:12:30.4320395Z 160 โ โ },
2026-10-24T15:12:30.4320542Z 161 โ โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T15:12:30.4320680Z 162 โ โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T15:12:30.4320815Z 163 โ โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T15:12:30.4320927Z 164 โ โ onStateChange: (nextState) =>
2026-10-24T15:12:30.4321017Z 165 โ โ setState({
2026-10-24T15:12:30.4321117Z 166 โ โ state: nextState,
2026-10-24T15:12:30.4321253Z 167 โ โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T15:12:30.4321381Z 168 โ โ label: sessionRef.current?.label ?? null,
2026-10-24T15:12:30.4321461Z 169 โ โ }),
2026-10-24T15:12:30.4321596Z 170 โ โโโถ });
2026-10-24T15:12:30.4321799Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T15:12:30.4321855Z 171 โ }
2026-10-24T15:12:30.4321906Z โฐโโโโ
2026-10-24T15:12:30.4322375Z 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-24T15:12:30.4322665Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4322667Z
2026-10-24T15:12:30.4322811Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4322972Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T15:12:30.4323059Z 153 โ recorderRef.current = recorder;
2026-10-24T15:12:30.4323161Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T15:12:30.4323273Z ยท โโโโโโฌโโโโโโโโโฌโโโ
2026-10-24T15:12:30.4323455Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T15:12:30.4323592Z ยท โฐโโ This value is a ref
2026-10-24T15:12:30.4323656Z 155 โ recorder,
2026-10-24T15:12:30.4323707Z โฐโโโโ
2026-10-24T15:12:30.4324228Z 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-24T15:12:30.4324558Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4324560Z
2026-10-24T15:12:30.4324705Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4324861Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T15:12:30.4324947Z 184 โ return () => subscription.remove();
2026-10-24T15:12:30.4325012Z 185 โ }, [controller]);
2026-10-24T15:12:30.4325089Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4325235Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4325288Z 186 โ
2026-10-24T15:12:30.4325338Z โฐโโโโ
2026-10-24T15:12:30.4325811Z 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-24T15:12:30.4326105Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4326108Z
2026-10-24T15:12:30.4326249Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4326403Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T15:12:30.4326490Z 184 โ return () => subscription.remove();
2026-10-24T15:12:30.4326554Z 185 โ }, [controller]);
2026-10-24T15:12:30.4326631Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4326778Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4326835Z 186 โ
2026-10-24T15:12:30.4326886Z โฐโโโโ
2026-10-24T15:12:30.4327349Z 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-24T15:12:30.4327639Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4327642Z
2026-10-24T15:12:30.4327783Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4327939Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T15:12:30.4327999Z 191 โ },
2026-10-24T15:12:30.4328074Z 192 โ [controller, recorder],
2026-10-24T15:12:30.4328149Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4328292Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4328346Z 193 โ );
2026-10-24T15:12:30.4328397Z โฐโโโโ
2026-10-24T15:12:30.4328866Z 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-24T15:12:30.4329160Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4329163Z
2026-10-24T15:12:30.4329357Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4329549Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T15:12:30.4329639Z 174 โ const controller = session.controller;
2026-10-24T15:12:30.4329726Z 175 โ const recorder = recorderRef.current;
2026-10-24T15:12:30.4329830Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4330074Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4330128Z 176 โ
2026-10-24T15:12:30.4330177Z โฐโโโโ
2026-10-24T15:12:30.4330643Z 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-24T15:12:30.4330938Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4330945Z
2026-10-24T15:12:30.4331087Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4331244Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T15:12:30.4331300Z 191 โ },
2026-10-24T15:12:30.4331371Z 192 โ [controller, recorder],
2026-10-24T15:12:30.4331460Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T15:12:30.4331605Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4331660Z 193 โ );
2026-10-24T15:12:30.4331712Z โฐโโโโ
2026-10-24T15:12:30.4332185Z 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-24T15:12:30.4332476Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4332479Z
2026-10-24T15:12:30.4332618Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4332775Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T15:12:30.4332867Z 245 โ return () => clearInterval(intervalId);
2026-10-24T15:12:30.4332976Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T15:12:30.4333063Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4333223Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4333278Z 247 โ
2026-10-24T15:12:30.4333328Z โฐโโโโ
2026-10-24T15:12:30.4333822Z 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-24T15:12:30.4334111Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4334114Z
2026-10-24T15:12:30.4334255Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4334411Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T15:12:30.4334570Z 245 โ return () => clearInterval(intervalId);
2026-10-24T15:12:30.4334721Z 246 โ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T15:12:30.4334851Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4335011Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4335064Z 247 โ
2026-10-24T15:12:30.4335114Z โฐโโโโ
2026-10-24T15:12:30.4335580Z 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-24T15:12:30.4335870Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4335877Z
2026-10-24T15:12:30.4336022Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4336178Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T15:12:30.4336245Z 260 โ setOwnerFocused,
2026-10-24T15:12:30.4336305Z 261 โ session,
2026-10-24T15:12:30.4336377Z ยท โโโโฌโโโ
2026-10-24T15:12:30.4336514Z ยท โฐโโ Cannot access ref value during render
2026-10-24T15:12:30.4336573Z 262 โ stop,
2026-10-24T15:12:30.4336624Z โฐโโโโ
2026-10-24T15:12:30.4337090Z 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-24T15:12:30.4337384Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4337389Z
2026-10-24T15:12:30.4337530Z โ react(refs): Cannot access refs during render
2026-10-24T15:12:30.4337687Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T15:12:30.4337741Z 250 โ
2026-10-24T15:12:30.4337881Z 251 โ โญโโถ return {
2026-10-24T15:12:30.4338094Z 252 โ โ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T15:12:30.4338175Z 253 โ โ state,
2026-10-24T15:12:30.4338264Z 254 โ โ audioLevels,
2026-10-24T15:12:30.4338365Z 255 โ โ elapsedSeconds,
2026-10-24T15:12:30.4338496Z 256 โ โ isBusy: voiceInputBlocksSubmission(state),
2026-10-24T15:12:30.4338578Z 257 โ โ ownerKey,
2026-10-24T15:12:30.4338657Z 258 โ โ label,
2026-10-24T15:12:30.4338746Z 259 โ โ focusedOwners,
2026-10-24T15:12:30.4338839Z 260 โ โ setOwnerFocused,
2026-10-24T15:12:30.4338920Z 261 โ โ session,
2026-10-24T15:12:30.4338998Z 262 โ โ stop,
2026-10-24T15:12:30.4339077Z 263 โ โ cancel,
2026-10-24T15:12:30.4339204Z 264 โ โโโถ };
2026-10-24T15:12:30.4339461Z ยท โฐโโโโ Cannot access ref value during render
2026-10-24T15:12:30.4339552Z 265 โ }
2026-10-24T15:12:30.4339603Z โฐโโโโ
2026-10-24T15:12:30.4340070Z 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-24T15:12:30.4340359Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T15:12:30.4340362Z
2026-10-24T15:12:30.4340521Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4340680Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T15:12:30.4340843Z 121 โ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T15:12:30.4340968Z 122 โ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T15:12:30.4341048Z ยท โโโโโโฌโโโโโ
2026-10-24T15:12:30.4341184Z ยท โฐโโ `audioLevels` originates here
2026-10-24T15:12:30.4341302Z 123 โ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T15:12:30.4341447Z 124 โ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T15:12:30.4341500Z 125 โ
2026-10-24T15:12:30.4341604Z 126 โ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T15:12:30.4341705Z 127 โ const recorder = createLazyVoiceRecorder({
2026-10-24T15:12:30.4341843Z 128 โ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T15:12:30.4341938Z 129 โ onStatus: (status: RecordingStatus) => {
2026-10-24T15:12:30.4342066Z 130 โ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T15:12:30.4342154Z 131 โ isFinished: status.isFinished,
2026-10-24T15:12:30.4342295Z 132 โ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T15:12:30.4342369Z 133 โ error: status.error,
2026-10-24T15:12:30.4342437Z 134 โ url: status.url,
2026-10-24T15:12:30.4342495Z 135 โ });
2026-10-24T15:12:30.4342550Z 136 โ },
2026-10-24T15:12:30.4342716Z 137 โ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T15:12:30.4342794Z 138 โ selectInput: (inputs) => {
2026-10-24T15:12:30.4342917Z 139 โ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T15:12:30.4343028Z 140 โ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T15:12:30.4343226Z 141 โ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T15:12:30.4343365Z 142 โ const order = rememberMicrophones(known, inputs);
2026-10-24T15:12:30.4343437Z 143 โ if (order !== known) {
2026-10-24T15:12:30.4343589Z 144 โ registry.set(updateMobilePreferencesAtom, {
2026-10-24T15:12:30.4343673Z 145 โ transform: (current) => ({
2026-10-24T15:12:30.4343846Z 146 โ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T15:12:30.4343907Z 147 โ }),
2026-10-24T15:12:30.4343967Z 148 โ });
2026-10-24T15:12:30.4344025Z 149 โ }
2026-10-24T15:12:30.4344134Z 150 โ return preferredMicrophoneInput(inputs, order);
2026-10-24T15:12:30.4344191Z 151 โ },
2026-10-24T15:12:30.4344244Z 152 โ });
2026-10-24T15:12:30.4344326Z 153 โ recorderRef.current = recorder;
2026-10-24T15:12:30.4344434Z 154 โ sessionRef.current = new VoiceInputSession({
2026-10-24T15:12:30.4344498Z 155 โ recorder,
2026-10-24T15:12:30.4344597Z 156 โ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T15:12:30.4344681Z 157 โ requestPermission: async () => {
2026-10-24T15:12:30.4344813Z 158 โ const permission = await requestRecordingPermissionsAsync();
2026-10-24T15:12:30.4344968Z 159 โ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T15:12:30.4345024Z 160 โ },
2026-10-24T15:12:30.4345132Z 161 โ configureRecording: configureVoiceRecordingAudio,
2026-10-24T15:12:30.4345239Z 162 โ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T15:12:30.4345341Z 163 โ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T15:12:30.4345422Z 164 โ onStateChange: (nextState) =>
2026-10-24T15:12:30.4345492Z 165 โ setState({
2026-10-24T15:12:30.4345564Z 166 โ state: nextState,
2026-10-24T15:12:30.4345668Z 167 โ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T15:12:30.4345766Z 168 โ label: sessionRef.current?.label ?? null,
2026-10-24T15:12:30.4345824Z 169 โ }),
2026-10-24T15:12:30.4345879Z 170 โ });
2026-10-24T15:12:30.4345931Z 171 โ }
2026-10-24T15:12:30.4345983Z 172 โ
2026-10-24T15:12:30.4346068Z 173 โ const session = sessionRef.current;
2026-10-24T15:12:30.4346155Z 174 โ const controller = session.controller;
2026-10-24T15:12:30.4346240Z 175 โ const recorder = recorderRef.current;
2026-10-24T15:12:30.4346292Z 176 โ
2026-10-24T15:12:30.4346357Z 177 โ useEffect(() => {
2026-10-24T15:12:30.4346506Z 178 โ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T15:12:30.4346652Z 179 โ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T15:12:30.4346796Z 180 โ // real background state cancels preparation; recorder status handles
2026-10-24T15:12:30.4346899Z 181 โ // calls and route interruptions during capture.
2026-10-24T15:12:30.4347035Z 182 โ if (nextState === "background") controller.appMovedToBackground();
2026-10-24T15:12:30.4347090Z 183 โ });
2026-10-24T15:12:30.4347175Z 184 โ return () => subscription.remove();
2026-10-24T15:12:30.4347243Z 185 โ }, [controller]);
2026-10-24T15:12:30.4347294Z 186 โ
2026-10-24T15:12:30.4347354Z 187 โ useEffect(
2026-10-24T15:12:30.4347416Z 188 โ () => () => {
2026-10-24T15:12:30.4347487Z 189 โ controller.dispose();
2026-10-24T15:12:30.4347553Z 190 โ recorder.release();
2026-10-24T15:12:30.4347609Z 191 โ },
2026-10-24T15:12:30.4347738Z 192 โ [controller, recorder],
2026-10-24T15:12:30.4347831Z 193 โ );
2026-10-24T15:12:30.4347882Z 194 โ
2026-10-24T15:12:30.4347946Z 195 โ useEffect(() => {
2026-10-24T15:12:30.4348038Z 196 โ if (state.phase !== "recording") return;
2026-10-24T15:12:30.4348090Z 197 โ
2026-10-24T15:12:30.4348236Z 198 โ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T15:12:30.4348341Z 199 โ const activation = activateKeepAwakeAsync(tag);
2026-10-24T15:12:30.4348424Z 200 โ void activation.catch(() => {});
2026-10-24T15:12:30.4348487Z 201 โ return () => {
2026-10-24T15:12:30.4348636Z 202 โ // Release after activation settles, even if the recording ends immediately.
2026-10-24T15:12:30.4348774Z 203 โ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T15:12:30.4348829Z 204 โ };
2026-10-24T15:12:30.4348915Z 205 โ }, [keepAwakeId, state.phase]);
2026-10-24T15:12:30.4348969Z 206 โ
2026-10-24T15:12:30.4349031Z 207 โ useEffect(() => {
2026-10-24T15:12:30.4349163Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T15:12:30.4349214Z 209 โ
2026-10-24T15:12:30.4349334Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T15:12:30.4349490Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T15:12:30.4349593Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T15:12:30.4349670Z ยท โโโโโโฌโโโโโ
2026-10-24T15:12:30.4349810Z ยท โฐโโ `audioLevels` cannot be modified
2026-10-24T15:12:30.4349865Z 213 โ }
2026-10-24T15:12:30.4349917Z โฐโโโโ
2026-10-24T15:12:30.4350192Z 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-24T15:12:30.4350503Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4350506Z
2026-10-24T15:12:30.4350708Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T15:12:30.4350867Z โญโ[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T15:12:30.4350920Z 206 โ
2026-10-24T15:12:30.4350982Z 207 โ useEffect(() => {
2026-10-24T15:12:30.4351060Z ยท โโโโฌโโโ
2026-10-24T15:12:30.4351280Z ยท โฐโโ This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T15:12:30.4351422Z 208 โ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T15:12:30.4351477Z 209 โ
2026-10-24T15:12:30.4351596Z 210 โ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T15:12:30.4351749Z 211 โ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T15:12:30.4351851Z 212 โ audioLevels.value = audioLevelsRef.current;
2026-10-24T15:12:30.4351927Z ยท โโโโโโฌโโโโโ
2026-10-24T15:12:30.4352060Z ยท โฐโโ This modifies `audioLevels`
2026-10-24T15:12:30.4352115Z 213 โ }
2026-10-24T15:12:30.4352166Z โฐโโโโ
2026-10-24T15:12:30.4352507Z help: This argument is a function which may reassign or mutate `audioLevels` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T15:12:30.4352875Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4352984Z
2026-10-24T15:12:30.4353355Z โ 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-24T15:12:30.4353469Z โญโ[packages/contracts/src/auth.test.ts:17:12]
2026-10-24T15:12:30.4353674Z 16 โ it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-24T15:12:30.4353842Z 17 โ expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-24T15:12:30.4353944Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4354011Z 18 โ "review:write",
2026-10-24T15:12:30.4354063Z โฐโโโโ
2026-10-24T15:12:30.4354065Z
2026-10-24T15:12:30.4354437Z โ 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-24T15:12:30.4354552Z โญโ[packages/contracts/src/auth.test.ts:20:18]
2026-10-24T15:12:30.4354608Z 19 โ ]);
2026-10-24T15:12:30.4354771Z 20 โ expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-24T15:12:30.4354876Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4355007Z 21 โ expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-24T15:12:30.4355058Z โฐโโโโ
2026-10-24T15:12:30.4355061Z
2026-10-24T15:12:30.4355430Z โ 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-24T15:12:30.4355542Z โญโ[packages/contracts/src/auth.test.ts:58:21]
2026-10-24T15:12:30.4355712Z 57 โ it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-24T15:12:30.4355836Z 58 โ const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-24T15:12:30.4355944Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4356012Z 59 โ authenticated: true,
2026-10-24T15:12:30.4356065Z โฐโโโโ
2026-10-24T15:12:30.4356067Z
2026-10-24T15:12:30.4356270Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4356432Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:155:7]
2026-10-24T15:12:30.4356487Z 154 โ }
2026-10-24T15:12:30.4356561Z 155 โ }, [wrappedRender]);
2026-10-24T15:12:30.4356645Z ยท โโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4356795Z ยท โฐโโ Unnecessary dependency `wrappedRender`
2026-10-24T15:12:30.4356847Z 156 โ
2026-10-24T15:12:30.4356897Z โฐโโโโ
2026-10-24T15:12:30.4357193Z 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-24T15:12:30.4357507Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4357510Z
2026-10-24T15:12:30.4357754Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T15:12:30.4357971Z โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:800:42]
2026-10-24T15:12:30.4358058Z 799 โ >
2026-10-24T15:12:30.4358184Z 800 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-24T15:12:30.4358307Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4358406Z 801 โ <WindowHingeContext value={windowHinge}>
2026-10-24T15:12:30.4358457Z โฐโโโโ
2026-10-24T15:12:30.4358685Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T15:12:30.4358824Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T15:12:30.4358827Z
2026-10-24T15:12:30.4358995Z โ react(purity): Cannot call impure function during render
2026-10-24T15:12:30.4359132Z โญโ[apps/web/src/components/CommandPalette.tsx:2037:20]
2026-10-24T15:12:30.4359254Z 2036 โ title: inferProjectTitleFromPath(destinationPath),
2026-10-24T15:12:30.4359347Z 2037 โ createdAt: new Date().toISOString(),
2026-10-24T15:12:30.4359438Z ยท โโโโโโฌโโโโ
2026-10-24T15:12:30.4359581Z ยท โฐโโ Cannot call impure function
2026-10-24T15:12:30.4359689Z 2038 โ remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-24T15:12:30.4359742Z โฐโโโโ
2026-10-24T15:12:30.4360024Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T15:12:30.4360321Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T15:12:30.4360324Z
2026-10-24T15:12:30.4360486Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4360649Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
2026-10-24T15:12:30.4360703Z 35 โ
2026-10-24T15:12:30.4360840Z 36 โ const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-24T15:12:30.4360926Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4361073Z ยท โฐโโ `inspectorProgress` originates here
2026-10-24T15:12:30.4361168Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T15:12:30.4361298Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T15:12:30.4361350Z 39 โ
2026-10-24T15:12:30.4361430Z 40 โ const onClosed = props.onClosed;
2026-10-24T15:12:30.4361496Z 41 โ useEffect(() => {
2026-10-24T15:12:30.4361591Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T15:12:30.4361678Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4361828Z ยท โฐโโ `inspectorProgress` cannot be modified
2026-10-24T15:12:30.4361905Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T15:12:30.4361955Z โฐโโโโ
2026-10-24T15:12:30.4362224Z 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-24T15:12:30.4362531Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4362533Z
2026-10-24T15:12:30.4362688Z โ react(immutability): This value cannot be modified
2026-10-24T15:12:30.4362906Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T15:12:30.4363032Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T15:12:30.4363162Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T15:12:30.4363252Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4363405Z ยท โฐโโ `renderedContentWidth` originates here
2026-10-24T15:12:30.4363457Z 39 โ
2026-10-24T15:12:30.4363535Z 40 โ const onClosed = props.onClosed;
2026-10-24T15:12:30.4363626Z 41 โ useEffect(() => {
2026-10-24T15:12:30.4363713Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T15:12:30.4363790Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T15:12:30.4363860Z 44 โ WORKSPACE_PANE_TIMING,
2026-10-24T15:12:30.4363925Z 45 โ (finished) => {
2026-10-24T15:12:30.4364070Z 46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T15:12:30.4364147Z 47 โ runOnJS(onClosed)();
2026-10-24T15:12:30.4364203Z 48 โ }
2026-10-24T15:12:30.4364258Z 49 โ },
2026-10-24T15:12:30.4364311Z 50 โ );
2026-10-24T15:12:30.4364442Z 51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T15:12:30.4364520Z 52 โ renderedInspectorWidth.set(
2026-10-24T15:12:30.4364662Z 53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T15:12:30.4364715Z 54 โ );
2026-10-24T15:12:30.4364768Z 55 โ }, [
2026-10-24T15:12:30.4364836Z 56 โ inspectorProgress,
2026-10-24T15:12:30.4364902Z 57 โ inspectorVisible,
2026-10-24T15:12:30.4364963Z 58 โ inspectorWidth,
2026-10-24T15:12:30.4365022Z 59 โ onClosed,
2026-10-24T15:12:30.4365101Z 60 โ renderedInspectorWidth,
2026-10-24T15:12:30.4365161Z 61 โ resizing,
2026-10-24T15:12:30.4365215Z 62 โ ]);
2026-10-24T15:12:30.4365266Z 63 โ
2026-10-24T15:12:30.4365328Z 64 โ useEffect(() => {
2026-10-24T15:12:30.4365418Z 65 โ const targetWidth = inspectorWidth ?? 0;
2026-10-24T15:12:30.4365504Z 66 โ if (!inspectorVisible || resizing) {
2026-10-24T15:12:30.4365602Z 67 โ renderedContentWidth.value = targetWidth;
2026-10-24T15:12:30.4365689Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T15:12:30.4365849Z ยท โฐโโ `renderedContentWidth` cannot be modified
2026-10-24T15:12:30.4365908Z 68 โ return;
2026-10-24T15:12:30.4365960Z โฐโโโโ
2026-10-24T15:12:30.4366226Z 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-24T15:12:30.4366589Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T15:12:30.4366626Z
2026-10-24T15:12:30.4366909Z โ eslint(no-unused-vars): Variable 'legacyCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4367066Z โญโ[packages/provider-cursor/src/server/credentialStore.test.ts:15:7]
2026-10-24T15:12:30.4367118Z 14 โ
2026-10-24T15:12:30.4367189Z 15 โ const legacyCredentials = {
2026-10-24T15:12:30.4367273Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T15:12:30.4367418Z ยท โฐโโ 'legacyCredentials' is declared here
2026-10-24T15:12:30.4367485Z 16 โ version: 1 as const,
2026-10-24T15:12:30.4367534Z โฐโโโโ
2026-10-24T15:12:30.4367646Z help: Consider removing this declaration.
2026-10-24T15:12:30.4367653Z
2026-10-24T15:12:30.4367933Z โ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-24T15:12:30.4368065Z โญโ[packages/provider-cursor/src/server/auth.ts:249:20]
2026-10-24T15:12:30.4368120Z 248 โ },
2026-10-24T15:12:30.4368201Z 249 โ (effect, flow, stopSessions) =>
2026-10-24T15:12:30.4368294Z ยท โโโโโโโฌโโโโโ
2026-10-24T15:12:30.4368442Z ยท โฐโโ 'stopSessions' is declared here
2026-10-24T15:12:30.4368506Z 250 โ effect.pipe(
2026-10-24T15:12:30.4368556Z โฐโโโโ
2026-10-24T15:12:30.4368658Z help: Consider removing this parameter.
2026-10-24T15:12:30.4368661Z
2026-10-24T15:12:30.4368875Z โ eslint(no-unused-vars): Function 'nonEmptyString' is declared but never used.
2026-10-24T15:12:30.4369027Z โญโ[packages/client-runtime/src/work-log/presentation.ts:237:10]
2026-10-24T15:12:30.4369079Z 236 โ
2026-10-24T15:12:30.4369197Z 237 โ function nonEmptyString(value: unknown): string | null {
2026-10-24T15:12:30.4369281Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4369424Z ยท โฐโโ 'nonEmptyString' is declared here
2026-10-24T15:12:30.4369566Z 238 โ return typeof value === "string" && value.trim().length > 0 ? value : null;
2026-10-24T15:12:30.4369618Z โฐโโโโ
2026-10-24T15:12:30.4369721Z help: Consider removing this declaration.
2026-10-24T15:12:30.4369724Z
2026-10-24T15:12:30.4370061Z โ unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-24T15:12:30.4370187Z โญโ[apps/server/src/vcs/GitVcsDriverCore.ts:517:11]
2026-10-24T15:12:30.4370288Z 516 โ GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-24T15:12:30.4370425Z 517 โ (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-24T15:12:30.4370511Z ยท โโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4370565Z 518 โ )
2026-10-24T15:12:30.4370616Z โฐโโโโ
2026-10-24T15:12:30.4370770Z help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-24T15:12:30.4370773Z
2026-10-24T15:12:30.4370976Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T15:12:30.4371139Z โญโ[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T15:12:30.4371286Z 3 โ AuthProvidersManageScope,
2026-10-24T15:12:30.4371395Z 4 โ type AuthSessionState,
2026-10-24T15:12:30.4371477Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4371623Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T15:12:30.4371690Z 5 โ type EnvironmentId,
2026-10-24T15:12:30.4371742Z โฐโโโโ
2026-10-24T15:12:30.4371840Z help: Consider removing this import.
2026-10-24T15:12:30.4371842Z
2026-10-24T15:12:30.4372200Z โ 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-24T15:12:30.4372339Z โญโ[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
2026-10-24T15:12:30.4372481Z 1785 โ const stat = branch.files!.find((file) => file.path === path)!;
2026-10-24T15:12:30.4372632Z 1786 โ const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-24T15:12:30.4372748Z ยท โโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4372811Z 1787 โ cwd,
2026-10-24T15:12:30.4372863Z โฐโโโโ
2026-10-24T15:12:30.4372866Z
2026-10-24T15:12:30.4373123Z โ eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-24T15:12:30.4373273Z โญโ[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-24T15:12:30.4373326Z 1619 โ
2026-10-24T15:12:30.4373535Z 1620 โ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-24T15:12:30.4373683Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4373893Z ยท โฐโโ 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-24T15:12:30.4373975Z 1621 โ const meta = response._meta;
2026-10-24T15:12:30.4374027Z โฐโโโโ
2026-10-24T15:12:30.4374130Z help: Consider removing this declaration.
2026-10-24T15:12:30.4374133Z
2026-10-24T15:12:30.4374390Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4374518Z โญโ[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-24T15:12:30.4374573Z 407 โ
2026-10-24T15:12:30.4374643Z 408 โ const layer: Layer.Layer<
2026-10-24T15:12:30.4374713Z ยท โโโฌโโ
2026-10-24T15:12:30.4374835Z ยท โฐโโ 'layer' is declared here
2026-10-24T15:12:30.4374932Z 409 โ ProviderAdapter.ProviderAdapterV2,
2026-10-24T15:12:30.4374987Z โฐโโโโ
2026-10-24T15:12:30.4375089Z help: Consider removing this declaration.
2026-10-24T15:12:30.4375091Z
2026-10-24T15:12:30.4375289Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T15:12:30.4375403Z โญโ[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-24T15:12:30.4375478Z 28 โ getPendingThreadOrder();
2026-10-24T15:12:30.4375558Z 29 โ }, [nowMinute, snoozeWakeTick]);
2026-10-24T15:12:30.4375679Z ยท โโโโโฌโโโโ โโโโโโโโฌโโโโโโ
2026-10-24T15:12:30.4375870Z ยท โ โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-24T15:12:30.4376010Z ยท โฐโโ Unnecessary dependency `nowMinute`
2026-10-24T15:12:30.4376133Z 30 โ return pending;
2026-10-24T15:12:30.4376222Z โฐโโโโ
2026-10-24T15:12:30.4376519Z 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-24T15:12:30.4376834Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T15:12:30.4376837Z
2026-10-24T15:12:30.4377097Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T15:12:30.4377225Z โญโ[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-24T15:12:30.4377333Z 83 โ const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-24T15:12:30.4377397Z 84 โ useEffect(() => {
2026-10-24T15:12:30.4377473Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4377608Z ยท โฐโโ This is the containing effect
2026-10-24T15:12:30.4377694Z 85 โ if (!actionState.isRunning) return;
2026-10-24T15:12:30.4377762Z 86 โ setNowMs(Date.now());
2026-10-24T15:12:30.4377831Z ยท โโโโโฌโโโ
2026-10-24T15:12:30.4377997Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T15:12:30.4378122Z 87 โ const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-24T15:12:30.4378173Z โฐโโโโ
2026-10-24T15:12:30.4378789Z 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-24T15:12:30.4379119Z 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-24T15:12:30.4379122Z
2026-10-24T15:12:30.4379326Z โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T15:12:30.4379455Z โญโ[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-24T15:12:30.4379526Z 2 โ AuthFilesystemReadScope,
2026-10-24T15:12:30.4379595Z 3 โ type AuthSessionState,
2026-10-24T15:12:30.4379680Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T15:12:30.4379824Z ยท โฐโโ 'AuthSessionState' is imported here
2026-10-24T15:12:30.4379899Z 4 โ type FilesystemBrowseEntry,
2026-10-24T15:12:30.4379955Z โฐโโโโ
2026-10-24T15:12:30.4380057Z help: Consider removing this import.
2026-10-24T15:12:30.4380059Z
2026-10-24T15:12:30.4380245Z โ oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-24T15:12:30.4380369Z โญโ[packages/client-runtime/src/state/shell.ts:189:5]
2026-10-24T15:12:30.4380480Z 186 โ let waiting = yield* Ref.get(awaitingCompletion);
2026-10-24T15:12:30.4380548Z 187 โ let next = initial;
2026-10-24T15:12:30.4380617Z ยท โโโฌโ
2026-10-24T15:12:30.4380738Z ยท โฐโโ From this accumulator
2026-10-24T15:12:30.4380818Z 188 โ let receivedSnapshot = false;
2026-10-24T15:12:30.4380894Z 189 โ for (const item of items) {
2026-10-24T15:12:30.4380962Z ยท โโฌโ
2026-10-24T15:12:30.4381121Z ยท โฐโโ For this loop
2026-10-24T15:12:30.4381243Z 190 โ if (item.kind === "synchronized") {
2026-10-24T15:12:30.4381309Z 191 โ waiting = false;
2026-10-24T15:12:30.4381399Z 192 โ if (Option.isSome(next.snapshot)) {
2026-10-24T15:12:30.4381517Z 193 โ next = { ...next, status: "live", error: Option.none() };
2026-10-24T15:12:30.4381603Z ยท โโโโฌโโโ
2026-10-24T15:12:30.4381734Z ยท โฐโโ From this spread
2026-10-24T15:12:30.4381792Z 194 โ }
2026-10-24T15:12:30.4381843Z โฐโโโโ
2026-10-24T15:12:30.4382000Z help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-24T15:12:30.4382156Z note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T15:12:30.4382158Z
2026-10-24T15:12:30.4382640Z โ 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-24T15:12:30.4382797Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1680:7]
2026-10-24T15:12:30.4382889Z 1679 โ yield* harness.replaceSession;
2026-10-24T15:12:30.4383104Z 1680 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4383258Z 1681 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-24T15:12:30.4383345Z 1682 โ โ break;
2026-10-24T15:12:30.4383425Z 1683 โ โ }
2026-10-24T15:12:30.4383539Z 1684 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4383707Z 1685 โ โฐโโถ }
2026-10-24T15:12:30.4383782Z 1686 โ yield* Queue.offer(
2026-10-24T15:12:30.4383834Z โฐโโโโ
2026-10-24T15:12:30.4383837Z
2026-10-24T15:12:30.4384313Z โ 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-24T15:12:30.4384467Z โญโ[packages/client-runtime/src/state/threads-sync.test.ts:1789:7]
2026-10-24T15:12:30.4384556Z 1788 โ yield* harness.replaceSession;
2026-10-24T15:12:30.4384764Z 1789 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T15:12:30.4384931Z 1790 โ โ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-24T15:12:30.4385039Z 1791 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4385172Z 1792 โ โฐโโถ }
2026-10-24T15:12:30.4385301Z 1793 โ expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-24T15:12:30.4385354Z โฐโโโโ
2026-10-24T15:12:30.4385357Z
2026-10-24T15:12:30.4385696Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4385842Z โญโ[packages/effect-codex-app-server/src/schema.test.ts:50:18]
2026-10-24T15:12:30.4386004Z 49 โ for (const tool of ["sendMessage", "followupTask", "interruptAgent", "listAgents"]) {
2026-10-24T15:12:30.4386227Z 50 โ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-24T15:12:30.4386344Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4386523Z 51 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-24T15:12:30.4386573Z โฐโโโโ
2026-10-24T15:12:30.4386576Z
2026-10-24T15:12:30.4386909Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4387053Z โญโ[packages/effect-codex-app-server/src/schema.test.ts:51:18]
2026-10-24T15:12:30.4387221Z 50 โ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-24T15:12:30.4387401Z 51 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-24T15:12:30.4387490Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4387544Z 52 โ }
2026-10-24T15:12:30.4387595Z โฐโโโโ
2026-10-24T15:12:30.4387598Z
2026-10-24T15:12:30.4387927Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4388068Z โญโ[packages/effect-codex-app-server/src/schema.test.ts:55:5]
2026-10-24T15:12:30.4388132Z 54 โ assert.equal(
2026-10-24T15:12:30.4388303Z 55 โ Schema.is(CodexSchema.ServerNotification__CollabAgentToolCallStatus)("interrupted"),
2026-10-24T15:12:30.4388373Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4388432Z 56 โ true,
2026-10-24T15:12:30.4388483Z โฐโโโโ
2026-10-24T15:12:30.4388486Z
2026-10-24T15:12:30.4388823Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4388968Z โญโ[packages/effect-codex-app-server/src/schema.test.ts:59:5]
2026-10-24T15:12:30.4389029Z 58 โ assert.equal(
2026-10-24T15:12:30.4389211Z 59 โ Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentToolCallStatus)("interrupted"),
2026-10-24T15:12:30.4389282Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4389339Z 60 โ true,
2026-10-24T15:12:30.4389388Z โฐโโโโ
2026-10-24T15:12:30.4389391Z
2026-10-24T15:12:30.4389721Z โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T15:12:30.4389922Z โญโ[packages/effect-codex-app-server/src/schema.test.ts:103:16]
2026-10-24T15:12:30.4390010Z 102 โ
2026-10-24T15:12:30.4390176Z 103 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse)(resumeResponse), true);
2026-10-24T15:12:30.4390261Z ยท โโโโโโโโโ
2026-10-24T15:12:30.4390315Z 104 โ });
2026-10-24T15:12:30.4390367Z โฐโโโโ
2026-10-24T15:12:30.4390369Z
2026-10-24T15:12:30.4390558Z โ eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-24T15:12:30.4390691Z โญโ[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-24T15:12:30.4390809Z 3 โ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-24T15:12:30.4390890Z 4 โ import * as Arr from "effect/Array";
2026-10-24T15:12:30.4390961Z ยท โโฌโ
2026-10-24T15:12:30.4391085Z ยท โฐโโ 'Arr' is imported here
2026-10-24T15:12:30.4391176Z 5 โ import * as Order from "effect/Order";
2026-10-24T15:12:30.4391232Z โฐโโโโ
2026-10-24T15:12:30.4391330Z help: Consider removing this import.
2026-10-24T15:12:30.4391332Z
2026-10-24T15:12:30.4391524Z โ eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-24T15:12:30.4391655Z โญโ[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-24T15:12:30.4391736Z 4 โ import * as Arr from "effect/Array";
2026-10-24T15:12:30.4391816Z 5 โ import * as Order from "effect/Order";
2026-10-24T15:12:30.4391890Z ยท โโโฌโโ
2026-10-24T15:12:30.4392020Z ยท โฐโโ 'Order' is imported here
2026-10-24T15:12:30.4392073Z 6 โ
2026-10-24T15:12:30.4392122Z โฐโโโโ
2026-10-24T15:12:30.4392226Z help: Consider removing this import.
2026-10-24T15:12:30.4392235Z
2026-10-24T15:12:30.4392520Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T15:12:30.4392677Z โญโ[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T15:12:30.4392733Z 162 โ keys,
2026-10-24T15:12:30.4392805Z 163 โ overridingProjects = [],
2026-10-24T15:12:30.4392888Z ยท โโ
2026-10-24T15:12:30.4392955Z 164 โ onClearOverrides,
2026-10-24T15:12:30.4393006Z โฐโโโโ
2026-10-24T15:12:30.4393328Z help: Default values are re-created on every render and break referential equality, causing unnecessary re-renders. Move the value out of the component or memoize it.
2026-10-24T15:12:30.4393330Z
2026-10-24T15:12:30.4393564Z โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T15:12:30.4393693Z โญโ[apps/web/src/contextMenuFallback.test.ts:38:9]
2026-10-24T15:12:30.4393759Z 37 โ get isConnected() {
2026-10-24T15:12:30.4393851Z 38 โ let current: FakeElement | null = this;
2026-10-24T15:12:30.4393924Z ยท โโโโโโโ
2026-10-24T15:12:30.4393996Z 39 โ while (current?.parent) {
2026-10-24T15:12:30.4394046Z โฐโโโโ
2026-10-24T15:12:30.4394321Z 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-24T15:12:30.4394323Z
2026-10-24T15:12:30.4394965Z โ 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-24T15:12:30.4395160Z โญโ[packages/client-runtime/src/connection/supervisor.test.ts:135:3]
2026-10-24T15:12:30.4395275Z 134 โ let lastState = yield* SubscriptionRef.get(state);
2026-10-24T15:12:30.4395492Z 135 โ โญโโถ for (let iteration = 0; iteration < 100; iteration += 1) {
2026-10-24T15:12:30.4395629Z 136 โ โ lastState = yield* SubscriptionRef.get(state);
2026-10-24T15:12:30.4395735Z 137 โ โ if (predicate(lastState)) {
2026-10-24T15:12:30.4395834Z 138 โ โ return lastState;
2026-10-24T15:12:30.4395907Z 139 โ โ }
2026-10-24T15:12:30.4396009Z 140 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4396142Z 141 โ โฐโโถ }
2026-10-24T15:12:30.4396221Z 142 โ return yield* Effect.die(
2026-10-24T15:12:30.4396271Z โฐโโโโ
2026-10-24T15:12:30.4396274Z
2026-10-24T15:12:30.4396543Z โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T15:12:30.4396660Z โญโ[apps/server/src/usage/UsageService.ts:169:7]
2026-10-24T15:12:30.4396714Z 168 โ
2026-10-24T15:12:30.4396791Z 169 โ const layerTest = Layer.succeed(
2026-10-24T15:12:30.4396866Z ยท โโโโโฌโโโโ
2026-10-24T15:12:30.4396999Z ยท โฐโโ 'layerTest' is declared here
2026-10-24T15:12:30.4397063Z 170 โ UsageService,
2026-10-24T15:12:30.4397114Z โฐโโโโ
2026-10-24T15:12:30.4397219Z help: Consider removing this declaration.
2026-10-24T15:12:30.4397221Z
2026-10-24T15:12:30.4397692Z โ 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-24T15:12:30.4397827Z โญโ[apps/server/src/usage/UsageService.test.ts:2615:7]
2026-10-24T15:12:30.4397926Z 2614 โ let orphanedAt: number | undefined;
2026-10-24T15:12:30.4398155Z 2615 โ โญโโถ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-24T15:12:30.4398278Z 2616 โ โ const tasks: Array<() => void> = [];
2026-10-24T15:12:30.4398427Z 2617 โ โ const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-24T15:12:30.4398563Z 2618 โ โ scheduleTask: (task) => tasks.push(task),
2026-10-24T15:12:30.4398665Z 2619 โ โ flush: () => {
2026-10-24T15:12:30.4398788Z 2620 โ โ let task: (() => void) | undefined;
2026-10-24T15:12:30.4398935Z 2621 โ โ while ((task = tasks.shift()) !== undefined) task();
2026-10-24T15:12:30.4399018Z 2622 โ โ },
2026-10-24T15:12:30.4399098Z 2623 โ โ };
2026-10-24T15:12:30.4399168Z 2624 โ โ
2026-10-24T15:12:30.4399328Z 2625 โ โ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-24T15:12:30.4399434Z 2626 โ โ let requestChecks = 0;
2026-10-24T15:12:30.4399563Z 2627 โ โ const scheduler: Scheduler.Scheduler = {
2026-10-24T15:12:30.4399730Z 2628 โ โ executionMode: "async",
2026-10-24T15:12:30.4399885Z 2629 โ โ makeDispatcher: () => dispatcher,
2026-10-24T15:12:30.4399996Z 2630 โ โ shouldYield: (fiber) => {
2026-10-24T15:12:30.4400128Z 2631 โ โ if (fiber !== requestFiber) return false;
2026-10-24T15:12:30.4400234Z 2632 โ โ requestChecks += 1;
2026-10-24T15:12:30.4400377Z 2633 โ โ if (requestChecks !== interruptAt) return false;
2026-10-24T15:12:30.4400492Z 2634 โ โ fiber.interruptUnsafe();
2026-10-24T15:12:30.4400589Z 2635 โ โ return true;
2026-10-24T15:12:30.4400671Z 2636 โ โ },
2026-10-24T15:12:30.4400751Z 2637 โ โ };
2026-10-24T15:12:30.4400826Z 2638 โ โ
2026-10-24T15:12:30.4400950Z 2639 โ โ const input: UsageSummaryInput = {
2026-10-24T15:12:30.4401044Z 2640 โ โ ...WINDOW,
2026-10-24T15:12:30.4401173Z 2641 โ โ sinceDay: UsageDay.make("2026-09-01"),
2026-10-24T15:12:30.4401366Z 2642 โ โ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-24T15:12:30.4401445Z 2643 โ โ };
2026-10-24T15:12:30.4401557Z 2644 โ โ const first = yield* service
2026-10-24T15:12:30.4401662Z 2645 โ โ .readSummary(input)
2026-10-24T15:12:30.4401750Z 2646 โ โ .pipe(
2026-10-24T15:12:30.4401846Z 2647 โ โ Effect.exit,
2026-10-24T15:12:30.4402012Z 2648 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T15:12:30.4402120Z 2649 โ โ Effect.forkChild,
2026-10-24T15:12:30.4402201Z 2650 โ โ );
2026-10-24T15:12:30.4402303Z 2651 โ โ requestFiber = first;
2026-10-24T15:12:30.4402409Z 2652 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4402511Z 2653 โ โ dispatcher.flush();
2026-10-24T15:12:30.4402580Z 2654 โ โ
2026-10-24T15:12:30.4402730Z 2655 โ โ const second = yield* service.readSummary(input).pipe(
2026-10-24T15:12:30.4402829Z 2656 โ โ Effect.match({
2026-10-24T15:12:30.4402958Z 2657 โ โ onFailure: (error) => error.reason,
2026-10-24T15:12:30.4403086Z 2658 โ โ onSuccess: () => "success" as const,
2026-10-24T15:12:30.4403169Z 2659 โ โ }),
2026-10-24T15:12:30.4403325Z 2660 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T15:12:30.4403427Z 2661 โ โ Effect.forkChild,
2026-10-24T15:12:30.4403507Z 2662 โ โ );
2026-10-24T15:12:30.4403639Z 2663 โ โ yield* Effect.yieldNow;
2026-10-24T15:12:30.4403740Z 2664 โ โ dispatcher.flush();
2026-10-24T15:12:30.4403868Z 2665 โ โ const secondExit = second.pollUnsafe();
2026-10-24T15:12:30.4403983Z 2666 โ โ if (secondExit === undefined) {
2026-10-24T15:12:30.4404153Z 2667 โ โ second.interruptUnsafe();
2026-10-24T15:12:30.4404293Z 2668 โ โ orphanedAt = interruptAt;
2026-10-24T15:12:30.4404380Z 2669 โ โ break;
2026-10-24T15:12:30.4404459Z 2670 โ โ }
2026-10-24T15:12:30.4404579Z 2671 โ โ if (Exit.isFailure(secondExit)) {
2026-10-24T15:12:30.4404736Z 2672 โ โ assert.fail("the matching request fiber was interrupted");
2026-10-24T15:12:30.4404815Z 2673 โ โ }
2026-10-24T15:12:30.4404966Z 2674 โ โ assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-24T15:12:30.4405101Z 2675 โ โฐโโถ }
2026-10-24T15:12:30.4405156Z 2676 โ
2026-10-24T15:12:30.4405208Z โฐโโโโ
2026-10-24T15:12:30.4405217Z
2026-10-24T15:12:30.4405401Z โ unicorn(no-new-array): Do not use `new Array(singleArgument)`.
2026-10-24T15:12:30.4405521Z โญโ[apps/web/src/terminal/ghostty/core.ts:194:19]
2026-10-24T15:12:30.4405643Z 193 โ const count = Math.min(CHUNK_SIZE, graphemeLength - start);
2026-10-24T15:12:30.4405733Z 194 โ const codes = new Array<number>(count);
2026-10-24T15:12:30.4405841Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T15:12:30.4405943Z 195 โ for (let index = 0; index < count; index += 1) {
2026-10-24T15:12:30.4405994Z โฐโโโโ
2026-10-24T15:12:30.4406421Z 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-24T15:12:30.4406430Z
2026-10-24T15:12:30.4406518Z Found 0 errors and 367 warnings in 5477 files (5.2s, 8 threads)
2026-10-24T15:12:30.4868830Z Post job cleanup.
2026-10-24T15:12:30.5547350Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T15:12:30.5642417Z Post job cleanup.
2026-10-24T15:12:30.5655606Z ##[start-action display=Cache full pnpm store;id=__aa3ca0c3-306a-4350-8da6-7264c814c0ff.__actions_cache]
2026-10-24T15:12:30.5992794Z Post job cleanup.
2026-10-24T15:12:30.6635678Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fa50cf9b003d547cd32552f61b874eb4abe5dace3fdb4b1abd9610da2da24074, not saving cache.
2026-10-24T15:12:30.6675347Z ##[end-action id=__aa3ca0c3-306a-4350-8da6-7264c814c0ff.__actions_cache;outcome=success;conclusion=success;duration_ms=101]
2026-10-24T15:12:30.6677132Z ##[start-action display=Cache Vite+;id=__aa3ca0c3-306a-4350-8da6-7264c814c0ff.vp_cache]
2026-10-24T15:12:30.6698236Z Post job cleanup.
2026-10-24T15:12:30.7302655Z 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-24T15:12:30.7341570Z ##[end-action id=__aa3ca0c3-306a-4350-8da6-7264c814c0ff.vp_cache;outcome=success;conclusion=success;duration_ms=66]
2026-10-24T15:12:30.7377937Z Post job cleanup.
2026-10-24T15:12:30.7816312Z [command]/usr/local/bin/git version
2026-10-24T15:12:30.7849078Z git version 2.55.0
2026-10-24T15:12:30.7869256Z Temporarily overriding HOME='/home/runner/_work/_temp/2dad3bf7-8444-4f44-b205-abacdfaae8af' before making global git config changes
2026-10-24T15:12:30.7869894Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T15:12:30.7872861Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T15:12:30.7896896Z Removing SSH command configuration
2026-10-24T15:12:30.7900167Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T15:12:30.7924870Z [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-24T15:12:30.8066042Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T15:12:30.8121591Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T15:12:30.8162878Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T15:12:30.8190050Z ##[group]Run '/job_completed.sh'
2026-10-24T15:12:30.8203016Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T15:12:30.8203192Z env:
2026-10-24T15:12:30.8203306Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 173
2026-10-24T15:12:30.8203460Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 386
2026-10-24T15:12:30.8203641Z BLACKSMITH_CHECK_RUN_ID: 120907262757
2026-10-24T15:12:30.8203784Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T15:12:30.8203936Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T15:12:30.8204072Z ##[endgroup]
2026-10-24T15:12:30.8290421Z Docker container cache not activated, skipping hash computation.
2026-10-24T15:12:30.8592695Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T15:12:30.8636418Z Cleaning up orphan processes