GitHub check
256 KB of 614 KB loaded Download the full log (614 KB)
358 KB of earlier output not loaded
accepted") {
2026-10-25T02:26:58.7758480Z 521 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7758626Z 522 β β delivery = (yield* service.getWebhookDelivery({
2026-10-25T02:26:58.7758725Z 523 β β id: task.id,
2026-10-25T02:26:58.7758901Z 524 β β deliveryId: deliveryId!,
2026-10-25T02:26:58.7759060Z 525 β β })).delivery;
2026-10-25T02:26:58.7759216Z 526 β β°ββΆ }
2026-10-25T02:26:58.7759333Z 527 β assert.equal(delivery.outcome, "dispatch_failed");
2026-10-25T02:26:58.7759384Z β°ββββ
2026-10-25T02:26:58.7759387Z
2026-10-25T02:26:58.7759665Z β eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7759810Z ββ[apps/server/src/orchestration-v2/Orchestrator.ts:12551:7]
2026-10-25T02:26:58.7759866Z 12550 β
2026-10-25T02:26:58.7760003Z 12551 β const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-25T02:26:58.7760096Z Β· βββββββββ¬βββββββ
2026-10-25T02:26:58.7760242Z Β· β°ββ 'layerUnavailable' is declared here
2026-10-25T02:26:58.7760311Z 12552 β OrchestratorV2,
2026-10-25T02:26:58.7760362Z β°ββββ
2026-10-25T02:26:58.7760467Z help: Consider removing this declaration.
2026-10-25T02:26:58.7760469Z
2026-10-25T02:26:58.7760750Z β react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-25T02:26:58.7760904Z ββ[apps/web/src/components/settings/SettingInheritance.tsx:160:24]
2026-10-25T02:26:58.7760960Z 159 β keys,
2026-10-25T02:26:58.7761033Z 160 β overridingProjects = [],
2026-10-25T02:26:58.7761118Z Β· ββ
2026-10-25T02:26:58.7761191Z 161 β onClearOverrides,
2026-10-25T02:26:58.7761242Z β°ββββ
2026-10-25T02:26:58.7761555Z 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-25T02:26:58.7761558Z
2026-10-25T02:26:58.7761767Z β unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-25T02:26:58.7761899Z ββ[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-25T02:26:58.7761974Z 89 β let cursor = prompt.length;
2026-10-25T02:26:58.7762078Z 90 β for (const occurrence of occurrences.reverse()) {
2026-10-25T02:26:58.7762184Z Β· βββββββ
2026-10-25T02:26:58.7762265Z 91 β let { start, end } = occurrence;
2026-10-25T02:26:58.7762316Z β°ββββ
2026-10-25T02:26:58.7762578Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-25T02:26:58.7762584Z
2026-10-25T02:26:58.7762749Z β react(purity): Cannot call impure function during render
2026-10-25T02:26:58.7762894Z ββ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:373:47]
2026-10-25T02:26:58.7763022Z 372 β const { open, onOpenChange, onSnooze, timestampFormat } = props;
2026-10-25T02:26:58.7763173Z 373 β const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
2026-10-25T02:26:58.7763287Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7763446Z Β· β°ββ Cannot call impure function
2026-10-25T02:26:58.7763508Z 374 β return (
2026-10-25T02:26:58.7763626Z β°ββββ
2026-10-25T02:26:58.7763981Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-25T02:26:58.7764275Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-25T02:26:58.7764277Z
2026-10-25T02:26:58.7764442Z β react(purity): Cannot call impure function during render
2026-10-25T02:26:58.7764587Z ββ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:860:39]
2026-10-25T02:26:58.7764678Z 859 β if (snoozeGateClock.thread !== thread) {
2026-10-25T02:26:58.7764805Z 860 β setSnoozeGateClock({ thread, now: new Date().toISOString() });
2026-10-25T02:26:58.7764913Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7765070Z Β· β°ββ Cannot call impure function
2026-10-25T02:26:58.7765126Z 861 β }
2026-10-25T02:26:58.7765176Z β°ββββ
2026-10-25T02:26:58.7765446Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-25T02:26:58.7765735Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-25T02:26:58.7765737Z
2026-10-25T02:26:58.7766019Z β eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-25T02:26:58.7766134Z ββ[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-25T02:26:58.7766186Z 55 β
2026-10-25T02:26:58.7766289Z 56 β function normalizeTerminalContextSelection(
2026-10-25T02:26:58.7766398Z Β· βββββββββββββββββ¬ββββββββββββββββ
2026-10-25T02:26:58.7766585Z Β· β°ββ 'normalizeTerminalContextSelection' is declared here
2026-10-25T02:26:58.7766672Z 57 β selection: TerminalContextSelection,
2026-10-25T02:26:58.7766725Z β°ββββ
2026-10-25T02:26:58.7766825Z help: Consider removing this declaration.
2026-10-25T02:26:58.7766828Z
2026-10-25T02:26:58.7767028Z β eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-25T02:26:58.7767189Z ββ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-25T02:26:58.7767275Z 24 β import * as Schema from "effect/Schema";
2026-10-25T02:26:58.7767396Z 25 β import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-25T02:26:58.7767476Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7767615Z Β· β°ββ 'HostProcess' is imported here
2026-10-25T02:26:58.7767669Z 26 β
2026-10-25T02:26:58.7767717Z β°ββββ
2026-10-25T02:26:58.7767814Z help: Consider removing this import.
2026-10-25T02:26:58.7767816Z
2026-10-25T02:26:58.7768082Z β eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7768243Z ββ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-25T02:26:58.7768325Z 123 β const path = yield* Path.Path;
2026-10-25T02:26:58.7768438Z 124 β const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-25T02:26:58.7768590Z Β· βββββββ¬βββββ
2026-10-25T02:26:58.7768803Z Β· β°ββ 'serverConfig' is declared here
2026-10-25T02:26:58.7768943Z 125 β const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-25T02:26:58.7768993Z β°ββββ
2026-10-25T02:26:58.7769095Z help: Consider removing this declaration.
2026-10-25T02:26:58.7769097Z
2026-10-25T02:26:58.7769365Z β eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7769528Z ββ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-25T02:26:58.7769640Z 124 β const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-25T02:26:58.7769778Z 125 β const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-25T02:26:58.7769866Z Β· ββββββββ¬ββββββ
2026-10-25T02:26:58.7770010Z Β· β°ββ 'serverSettings' is declared here
2026-10-25T02:26:58.7770143Z 126 β const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-25T02:26:58.7770195Z β°ββββ
2026-10-25T02:26:58.7770299Z help: Consider removing this declaration.
2026-10-25T02:26:58.7770301Z
2026-10-25T02:26:58.7770537Z Γ t3code(no-low-value-comments): Cut this to 4 lines or fewer: keep the constraint, drop the background.
2026-10-25T02:26:58.7770676Z ββ[apps/server/src/orchestration-v2/WireProjection.ts:259:1]
2026-10-25T02:26:58.7770730Z 258 β
2026-10-25T02:26:58.7770858Z 259 β βββΆ /**
2026-10-25T02:26:58.7771063Z 260 β β * One per subscription, applied after coalescing so it only remembers records the client
2026-10-25T02:26:58.7771271Z 261 β β * received, in the snapshot or in events. A record event comes before the turn item that repeats
2026-10-25T02:26:58.7771472Z 262 β β * its body (adapters and the orchestrator emit them in that order), so the item can ship blank
2026-10-25T02:26:58.7771672Z 263 β β * and marked; so can a repeated subagent record. Emitting in the other order, or forgetting a
2026-10-25T02:26:58.7771807Z 264 β β * record, only costs bytes: the repeat ships whole.
2026-10-25T02:26:58.7771930Z 265 β β°ββΆ */
2026-10-25T02:26:58.7772023Z 266 β export function makeLiveBodyDeduper(): (
2026-10-25T02:26:58.7772076Z β°ββββ
2026-10-25T02:26:58.7772078Z
2026-10-25T02:26:58.7772343Z β eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7772474Z ββ[apps/server/src/telemetry/AnalyticsService.ts:327:7]
2026-10-25T02:26:58.7772525Z 326 β
2026-10-25T02:26:58.7772627Z 327 β const layerTest = AnalyticsService.layerTest;
2026-10-25T02:26:58.7772707Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7772839Z Β· β°ββ 'layerTest' is declared here
2026-10-25T02:26:58.7772890Z β°ββββ
2026-10-25T02:26:58.7772992Z help: Consider removing this declaration.
2026-10-25T02:26:58.7772994Z
2026-10-25T02:26:58.7773246Z β eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7773466Z ββ[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:405:7]
2026-10-25T02:26:58.7773554Z 404 β
2026-10-25T02:26:58.7773723Z 405 β const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-25T02:26:58.7773793Z Β· βββ¬ββ
2026-10-25T02:26:58.7773914Z Β· β°ββ 'layer' is declared here
2026-10-25T02:26:58.7773962Z β°ββββ
2026-10-25T02:26:58.7774062Z help: Consider removing this declaration.
2026-10-25T02:26:58.7774065Z
2026-10-25T02:26:58.7774228Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7774345Z ββ[apps/server/src/processRunner.test.ts:264:14]
2026-10-25T02:26:58.7774398Z 263 β
2026-10-25T02:26:58.7774499Z 264 β for (const {} of ["timeout", "success"] as const) {
2026-10-25T02:26:58.7774569Z Β· ββ
2026-10-25T02:26:58.7774630Z 265 β }
2026-10-25T02:26:58.7774682Z β°ββββ
2026-10-25T02:26:58.7774910Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7774912Z
2026-10-25T02:26:58.7775099Z β eslint(require-yield): This generator function does not have `yield`
2026-10-25T02:26:58.7775244Z ββ[packages/provider-acp/src/server/mcpOverAcpBridge.ts:81:78]
2026-10-25T02:26:58.7775298Z 80 β
2026-10-25T02:26:58.7775560Z 81 β βββΆ export const makeAcpMcpOverAcpBridge = Effect.fn("AcpMcpOverAcpBridge.make")(function* (
2026-10-25T02:26:58.7775679Z 82 β β options: AcpMcpOverAcpBridgeOptions,
2026-10-25T02:26:58.7775799Z 83 β β ): Effect.fn.Return<AcpMcpOverAcpBridge> {
2026-10-25T02:26:58.7776016Z 84 β β const fetchImplementation = options.fetchImplementation ?? fetch;
2026-10-25T02:26:58.7776149Z 85 β β const connections = new Map<string, Connection>();
2026-10-25T02:26:58.7776218Z 86 β β
2026-10-25T02:26:58.7776430Z 87 β β const connectionFor = (connectionId: string): Effect.Effect<Connection, AcpMcpOverAcpError> =>
2026-10-25T02:26:58.7776530Z 88 β β Effect.suspend(() => {
2026-10-25T02:26:58.7776663Z 89 β β const connection = connections.get(connectionId);
2026-10-25T02:26:58.7776773Z 90 β β return connection === undefined
2026-10-25T02:26:58.7776980Z 91 β β ? Effect.fail(new AcpMcpOverAcpError(`Unknown MCP-over-ACP connection "${connectionId}".`))
2026-10-25T02:26:58.7777095Z 92 β β : Effect.succeed(connection);
2026-10-25T02:26:58.7777172Z 93 β β });
2026-10-25T02:26:58.7777240Z 94 β β
2026-10-25T02:26:58.7777326Z 95 β β const send = (
2026-10-25T02:26:58.7777423Z 96 β β connection: Connection,
2026-10-25T02:26:58.7777513Z 97 β β message: unknown,
2026-10-25T02:26:58.7777667Z 98 β β ): Effect.Effect<ReadonlyArray<unknown>, AcpMcpOverAcpError> =>
2026-10-25T02:26:58.7777781Z 99 β β connection.mutex.withPermits(1)(
2026-10-25T02:26:58.7777887Z 100 β β Effect.gen(function* () {
2026-10-25T02:26:58.7778006Z 101 β β const body = JSON.stringify(message);
2026-10-25T02:26:58.7778205Z 102 β β if (Buffer.byteLength(body) > MAX_MESSAGE_BYTES) {
2026-10-25T02:26:58.7778492Z 103 β β return yield* Effect.fail(new AcpMcpOverAcpError("MCP-over-ACP message exceeds 8 MiB."));
2026-10-25T02:26:58.7778570Z 104 β β }
2026-10-25T02:26:58.7778701Z 105 β β const response = yield* Effect.tryPromise({
2026-10-25T02:26:58.7778800Z 106 β β try: (signal) =>
2026-10-25T02:26:58.7778930Z 107 β β fetchImplementation(options.endpoint, {
2026-10-25T02:26:58.7779031Z 108 β β method: "POST",
2026-10-25T02:26:58.7779121Z 109 β β signal,
2026-10-25T02:26:58.7779215Z 110 β β headers: {
2026-10-25T02:26:58.7779348Z 111 β β "content-type": "application/json",
2026-10-25T02:26:58.7779490Z 112 β β accept: "application/json, text/event-stream",
2026-10-25T02:26:58.7779622Z 113 β β authorization: options.authorization,
2026-10-25T02:26:58.7779744Z 114 β β ...(connection.sessionId === null
2026-10-25T02:26:58.7779835Z 115 β β ? {}
2026-10-25T02:26:58.7779978Z 116 β β : { "mcp-session-id": connection.sessionId }),
2026-10-25T02:26:58.7780111Z 117 β β ...(connection.protocolVersion === null
2026-10-25T02:26:58.7780200Z 118 β β ? {}
2026-10-25T02:26:58.7780363Z 119 β β : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-25T02:26:58.7780453Z 120 β β },
2026-10-25T02:26:58.7780546Z 121 β β body,
2026-10-25T02:26:58.7780627Z 122 β β }),
2026-10-25T02:26:58.7780727Z 123 β β catch: bridgeError,
2026-10-25T02:26:58.7780806Z 124 β β });
2026-10-25T02:26:58.7781015Z 125 β β connection.sessionId = response.headers.get("mcp-session-id") ?? connection.sessionId;
2026-10-25T02:26:58.7781113Z 126 β β if (!response.ok) {
2026-10-25T02:26:58.7781218Z 127 β β yield* Effect.promise(
2026-10-25T02:26:58.7781395Z 128 β β () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-25T02:26:58.7781600Z 129 β β );
2026-10-25T02:26:58.7781784Z 130 β β return yield* Effect.fail(
2026-10-25T02:26:58.7781989Z 131 β β new AcpMcpOverAcpError(`T3 Code MCP endpoint responded with HTTP ${response.status}.`),
2026-10-25T02:26:58.7782068Z 132 β β );
2026-10-25T02:26:58.7782146Z 133 β β }
2026-10-25T02:26:58.7782350Z 134 β β const payloads = [...(yield* Stream.runCollect(responsePayloads(response, bridgeError)))];
2026-10-25T02:26:58.7782469Z 135 β β for (const payload of payloads) {
2026-10-25T02:26:58.7782680Z 136 β β connection.protocolVersion = protocolVersionOf(payload) ?? connection.protocolVersion;
2026-10-25T02:26:58.7782756Z 137 β β }
2026-10-25T02:26:58.7782856Z 138 β β return payloads;
2026-10-25T02:26:58.7782978Z 139 β β }).pipe(Effect.mapError(bridgeError)),
2026-10-25T02:26:58.7783052Z 140 β β );
2026-10-25T02:26:58.7783121Z 141 β β
2026-10-25T02:26:58.7783292Z 142 β β const disconnect = Effect.fn("mcpOverAcpBridge.disconnect")(function* (
2026-10-25T02:26:58.7783417Z 143 β β request: AcpSchema.DisconnectMcpRequest,
2026-10-25T02:26:58.7783598Z 144 β β ): Effect.fn.Return<AcpSchema.DisconnectMcpResponse, AcpMcpOverAcpError> {
2026-10-25T02:26:58.7783758Z 145 β β const connection = yield* connectionFor(request.connectionId);
2026-10-25T02:26:58.7783883Z 146 β β connections.delete(request.connectionId);
2026-10-25T02:26:58.7784006Z 147 β β const sessionId = connection.sessionId;
2026-10-25T02:26:58.7784110Z 148 β β if (sessionId !== null) {
2026-10-25T02:26:58.7784235Z 149 β β const response = yield* Effect.tryPromise({
2026-10-25T02:26:58.7784329Z 150 β β try: (signal) =>
2026-10-25T02:26:58.7784454Z 151 β β fetchImplementation(options.endpoint, {
2026-10-25T02:26:58.7784553Z 152 β β method: "DELETE",
2026-10-25T02:26:58.7784641Z 153 β β signal,
2026-10-25T02:26:58.7784733Z 154 β β headers: {
2026-10-25T02:26:58.7784861Z 155 β β authorization: options.authorization,
2026-10-25T02:26:58.7784983Z 156 β β "mcp-session-id": sessionId,
2026-10-25T02:26:58.7785117Z 157 β β ...(connection.protocolVersion === null
2026-10-25T02:26:58.7785266Z 158 β β ? {}
2026-10-25T02:26:58.7785464Z 159 β β : { "mcp-protocol-version": connection.protocolVersion }),
2026-10-25T02:26:58.7785547Z 160 β β },
2026-10-25T02:26:58.7785627Z 161 β β }),
2026-10-25T02:26:58.7785727Z 162 β β catch: bridgeError,
2026-10-25T02:26:58.7785802Z 163 β β });
2026-10-25T02:26:58.7785969Z 164 β β if (!response.ok && response.status !== 404) {
2026-10-25T02:26:58.7786078Z 165 β β return yield* Effect.fail(
2026-10-25T02:26:58.7786267Z 166 β β new AcpMcpOverAcpError(
2026-10-25T02:26:58.7786569Z 167 β β `T3 Code MCP endpoint rejected disconnect with HTTP ${response.status}.`,
2026-10-25T02:26:58.7786650Z 168 β β ),
2026-10-25T02:26:58.7786728Z 169 β β );
2026-10-25T02:26:58.7786804Z 170 β β }
2026-10-25T02:26:58.7786904Z 171 β β yield* Effect.promise(
2026-10-25T02:26:58.7787079Z 172 β β () => response.body?.cancel().catch(() => undefined) ?? Promise.resolve(),
2026-10-25T02:26:58.7787156Z 173 β β );
2026-10-25T02:26:58.7787229Z 174 β β }
2026-10-25T02:26:58.7787310Z 175 β β return {};
2026-10-25T02:26:58.7787386Z 176 β β });
2026-10-25T02:26:58.7787459Z 177 β β
2026-10-25T02:26:58.7787541Z 178 β β return {
2026-10-25T02:26:58.7787708Z 179 β β connect: Effect.fn("mcpOverAcpBridge.connect")(function* (request) {
2026-10-25T02:26:58.7787829Z 180 β β if (request.serverId !== "t3-code") {
2026-10-25T02:26:58.7787935Z 181 β β return yield* Effect.fail(
2026-10-25T02:26:58.7788117Z 182 β β new AcpMcpOverAcpError(`Unknown ACP MCP server "${request.serverId}".`),
2026-10-25T02:26:58.7788193Z 183 β β );
2026-10-25T02:26:58.7788268Z 184 β β }
2026-10-25T02:26:58.7788393Z 185 β β if (connections.size >= MAX_CONNECTIONS) {
2026-10-25T02:26:58.7788605Z 186 β β return yield* Effect.fail(new AcpMcpOverAcpError("Too many MCP-over-ACP connections."));
2026-10-25T02:26:58.7788680Z 187 β β }
2026-10-25T02:26:58.7788834Z 188 β β const connectionId = yield* options.allocateConnectionId;
2026-10-25T02:26:58.7788951Z 189 β β connections.set(connectionId, {
2026-10-25T02:26:58.7789065Z 190 β β mutex: yield* Semaphore.make(1),
2026-10-25T02:26:58.7789159Z 191 β β sessionId: null,
2026-10-25T02:26:58.7789264Z 192 β β protocolVersion: null,
2026-10-25T02:26:58.7789361Z 193 β β nextRequestId: 0,
2026-10-25T02:26:58.7789444Z 194 β β });
2026-10-25T02:26:58.7789544Z 195 β β return { connectionId };
2026-10-25T02:26:58.7789626Z 196 β β }),
2026-10-25T02:26:58.7789798Z 197 β β message: Effect.fn("mcpOverAcpBridge.message")(function* (request) {
2026-10-25T02:26:58.7789959Z 198 β β const connection = yield* connectionFor(request.connectionId);
2026-10-25T02:26:58.7790080Z 199 β β const id = ++connection.nextRequestId;
2026-10-25T02:26:58.7790205Z 200 β β const payloads = yield* send(connection, {
2026-10-25T02:26:58.7790302Z 201 β β jsonrpc: "2.0",
2026-10-25T02:26:58.7790383Z 202 β β id,
2026-10-25T02:26:58.7790485Z 203 β β method: request.method,
2026-10-25T02:26:58.7790641Z 204 β β ...(request.params == null ? {} : { params: request.params }),
2026-10-25T02:26:58.7790718Z 205 β β });
2026-10-25T02:26:58.7790965Z 206 β β const response = payloads.find((payload) => asEnvelope(payload)?.id === id);
2026-10-25T02:26:58.7791166Z 207 β β const envelope = asEnvelope(response);
2026-10-25T02:26:58.7791265Z 208 β β if (envelope === null) {
2026-10-25T02:26:58.7791371Z 209 β β return yield* Effect.fail(
2026-10-25T02:26:58.7791553Z 210 β β new AcpMcpOverAcpError("MCP server did not return a matching response."),
2026-10-25T02:26:58.7791630Z 211 β β );
2026-10-25T02:26:58.7791703Z 212 β β }
2026-10-25T02:26:58.7791820Z 213 β β if (envelope.error !== undefined) {
2026-10-25T02:26:58.7792018Z 214 β β return yield* Effect.fail(new AcpMcpOverAcpError(errorMessage(envelope.error)));
2026-10-25T02:26:58.7792094Z 215 β β }
2026-10-25T02:26:58.7792261Z 216 β β return (envelope.result ?? null) as AcpSchema.MessageMcpResponse;
2026-10-25T02:26:58.7792335Z 217 β β }),
2026-10-25T02:26:58.7792521Z 218 β β notification: Effect.fn("mcpOverAcpBridge.notification")(function* (request) {
2026-10-25T02:26:58.7792678Z 219 β β const connection = yield* connectionFor(request.connectionId);
2026-10-25T02:26:58.7792781Z 220 β β yield* send(connection, {
2026-10-25T02:26:58.7792877Z 221 β β jsonrpc: "2.0",
2026-10-25T02:26:58.7792978Z 222 β β method: request.method,
2026-10-25T02:26:58.7793139Z 223 β β ...(request.params == null ? {} : { params: request.params }),
2026-10-25T02:26:58.7793218Z 224 β β });
2026-10-25T02:26:58.7793290Z 225 β β }),
2026-10-25T02:26:58.7793374Z 226 β β disconnect,
2026-10-25T02:26:58.7793481Z 227 β β dispose: Effect.suspend(() =>
2026-10-25T02:26:58.7793575Z 228 β β Effect.forEach(
2026-10-25T02:26:58.7793677Z 229 β β [...connections.keys()],
2026-10-25T02:26:58.7793847Z 230 β β (connectionId) => disconnect({ connectionId }).pipe(Effect.ignore),
2026-10-25T02:26:58.7793946Z 231 β β { discard: true },
2026-10-25T02:26:58.7794022Z 232 β β ),
2026-10-25T02:26:58.7794096Z 233 β β ),
2026-10-25T02:26:58.7794174Z 234 β β };
2026-10-25T02:26:58.7794302Z 235 β β°ββΆ });
2026-10-25T02:26:58.7794352Z β°ββββ
2026-10-25T02:26:58.7794598Z help: Add a `yield` expression inside the generator body, or convert it to a regular function if iteration behavior is not needed.
2026-10-25T02:26:58.7794601Z
2026-10-25T02:26:58.7794806Z β eslint(no-unused-vars): Function 'summarizePayload' is declared but never used.
2026-10-25T02:26:58.7794944Z ββ[packages/provider-acp/src/server/nativeLogging.ts:22:10]
2026-10-25T02:26:58.7794995Z 21 β
2026-10-25T02:26:58.7795151Z 22 β function summarizePayload(payload: unknown): Readonly<Record<string, unknown>> {
2026-10-25T02:26:58.7795236Z Β· βββββββββ¬βββββββ
2026-10-25T02:26:58.7795450Z Β· β°ββ 'summarizePayload' is declared here
2026-10-25T02:26:58.7795621Z 23 β if (payload === null) return { valueType: "null" };
2026-10-25T02:26:58.7795680Z β°ββββ
2026-10-25T02:26:58.7795785Z help: Consider removing this declaration.
2026-10-25T02:26:58.7795787Z
2026-10-25T02:26:58.7796201Z β 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-25T02:26:58.7796311Z ββ[packages/contracts/src/auth.test.ts:17:12]
2026-10-25T02:26:58.7796464Z 16 β it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-25T02:26:58.7796627Z 17 β expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-25T02:26:58.7796726Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.7796798Z 18 β "review:write",
2026-10-25T02:26:58.7796850Z β°ββββ
2026-10-25T02:26:58.7796853Z
2026-10-25T02:26:58.7797208Z β 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-25T02:26:58.7797316Z ββ[packages/contracts/src/auth.test.ts:20:18]
2026-10-25T02:26:58.7797372Z 19 β ]);
2026-10-25T02:26:58.7797530Z 20 β expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-25T02:26:58.7797636Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.7797764Z 21 β expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-25T02:26:58.7797814Z β°ββββ
2026-10-25T02:26:58.7797816Z
2026-10-25T02:26:58.7798173Z β 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-25T02:26:58.7798284Z ββ[packages/contracts/src/auth.test.ts:57:21]
2026-10-25T02:26:58.7798452Z 56 β it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-25T02:26:58.7798574Z 57 β const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-25T02:26:58.7798680Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.7798747Z 58 β authenticated: true,
2026-10-25T02:26:58.7798800Z β°ββββ
2026-10-25T02:26:58.7798802Z
2026-10-25T02:26:58.7799012Z β eslint(no-unused-vars): Identifier 'serverEnvironment' is imported but never used.
2026-10-25T02:26:58.7799141Z ββ[apps/web/src/components/LegacySidebar.tsx:210:40]
2026-10-25T02:26:58.7799297Z 209 β import { useClientSettings, updateClientSettings } from "~/hooks/useSettings";
2026-10-25T02:26:58.7799459Z 210 β import { primaryServerKeybindingsAtom, serverEnvironment } from "../state/server";
2026-10-25T02:26:58.7799573Z Β· βββββββββ¬ββββββββ
2026-10-25T02:26:58.7799743Z Β· β°ββ 'serverEnvironment' is imported here
2026-10-25T02:26:58.7799851Z 211 β import { appAtomRegistry } from "../rpc/atomRegistry";
2026-10-25T02:26:58.7799903Z β°ββββ
2026-10-25T02:26:58.7799999Z help: Consider removing this import.
2026-10-25T02:26:58.7800002Z
2026-10-25T02:26:58.7800254Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7800483Z ββ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:388:7]
2026-10-25T02:26:58.7800586Z 383 β };
2026-10-25T02:26:58.7800686Z 384 β useEffect(() => {
2026-10-25T02:26:58.7800758Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7800886Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7800983Z 385 β if (!guidesEnabled && section === "guide") {
2026-10-25T02:26:58.7801077Z 386 β requestedSection.current = "overview";
2026-10-25T02:26:58.7801240Z 387 β currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-25T02:26:58.7801311Z 388 β setSection("overview");
2026-10-25T02:26:58.7801387Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7801555Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7801618Z 389 β }
2026-10-25T02:26:58.7801670Z β°ββββ
2026-10-25T02:26:58.7802272Z 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-25T02:26:58.7802592Z 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-25T02:26:58.7802595Z
2026-10-25T02:26:58.7802798Z β react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-25T02:26:58.7802967Z ββ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:390:6]
2026-10-25T02:26:58.7803065Z 385 β if (!guidesEnabled && section === "guide") {
2026-10-25T02:26:58.7803160Z 386 β requestedSection.current = "overview";
2026-10-25T02:26:58.7803242Z Β· βββββββββ¬βββββββ
2026-10-25T02:26:58.7803680Z Β· β°ββ Missing dependency `requestedSection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.7803840Z 387 β currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-25T02:26:58.7803985Z Β· ββββββββββ¬βββββββββ βββββββ¬ββββββ
2026-10-25T02:26:58.7804531Z Β· β β°ββ Missing dependency `scrollOffsets`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.7805054Z Β· β°ββ Missing dependency `currentScrollOffset`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.7805128Z 388 β setSection("overview");
2026-10-25T02:26:58.7805182Z 389 β }
2026-10-25T02:26:58.7805272Z 390 β }, [guidesEnabled, section, insets.top]);
2026-10-25T02:26:58.7805382Z Β· βββββββββββββββββββ¬βββββββββββββββββ
2026-10-25T02:26:58.7805570Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.7805654Z 391 β const tabContent = activityContent;
2026-10-25T02:26:58.7805709Z β°ββββ
2026-10-25T02:26:58.7805899Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-25T02:26:58.7806239Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7806241Z
2026-10-25T02:26:58.7806425Z β eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-25T02:26:58.7806594Z ββ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-25T02:26:58.7806675Z 554 β assert.deepStrictEqual(
2026-10-25T02:26:58.7806837Z 555 β (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-25T02:26:58.7806961Z Β· β¬
2026-10-25T02:26:58.7807122Z Β· β°ββ '_' is declared here
2026-10-25T02:26:58.7807185Z 556 β [
2026-10-25T02:26:58.7807235Z β°ββββ
2026-10-25T02:26:58.7807337Z help: Consider removing this parameter.
2026-10-25T02:26:58.7807339Z
2026-10-25T02:26:58.7807518Z β eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-25T02:26:58.7807689Z ββ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1154:70]
2026-10-25T02:26:58.7807770Z 1153 β assert.deepStrictEqual(
2026-10-25T02:26:58.7807932Z 1154 β (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-25T02:26:58.7808057Z Β· β¬
2026-10-25T02:26:58.7808218Z Β· β°ββ '_' is declared here
2026-10-25T02:26:58.7808280Z 1155 β [
2026-10-25T02:26:58.7808332Z β°ββββ
2026-10-25T02:26:58.7808431Z help: Consider removing this parameter.
2026-10-25T02:26:58.7808433Z
2026-10-25T02:26:58.7808621Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7808784Z ββ[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:803:17]
2026-10-25T02:26:58.7808847Z 802 β <div
2026-10-25T02:26:58.7808959Z 803 β key={`${index}:${check.name}:${check.url ?? ""}`}
2026-10-25T02:26:58.7809093Z Β· βββββββββββββββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7809319Z 804 β className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
2026-10-25T02:26:58.7809401Z β°ββββ
2026-10-25T02:26:58.7809590Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7809593Z
2026-10-25T02:26:58.7809844Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7810001Z ββ[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-25T02:26:58.7810165Z 112 β const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-25T02:26:58.7810229Z 113 β useEffect(() => {
2026-10-25T02:26:58.7810298Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7810428Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7810596Z 114 β if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-25T02:26:58.7810661Z 115 β return;
2026-10-25T02:26:58.7810713Z 116 β }
2026-10-25T02:26:58.7810829Z 117 β setEntry({ key: input.targetKey, location: candidate });
2026-10-25T02:26:58.7810898Z Β· βββββ¬βββ
2026-10-25T02:26:58.7811064Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7811182Z 118 β }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-25T02:26:58.7811234Z β°ββββ
2026-10-25T02:26:58.7811827Z 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-25T02:26:58.7812146Z 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-25T02:26:58.7812149Z
2026-10-25T02:26:58.7812607Z β 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-25T02:26:58.7812754Z ββ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-25T02:26:58.7812883Z 132 β const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-25T02:26:58.7813025Z 133 β βββΆ for (
2026-10-25T02:26:58.7813131Z 134 β β let attempt = 0;
2026-10-25T02:26:58.7813296Z 135 β β attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-25T02:26:58.7813391Z 136 β β attempt += 1
2026-10-25T02:26:58.7813471Z 137 β β ) {
2026-10-25T02:26:58.7813583Z 138 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7813716Z 139 β β°ββΆ }
2026-10-25T02:26:58.7813838Z 140 β expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-25T02:26:58.7813888Z β°ββββ
2026-10-25T02:26:58.7813890Z
2026-10-25T02:26:58.7814085Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7814301Z ββ[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-25T02:26:58.7814409Z 71 β <Pressable
2026-10-25T02:26:58.7814507Z 72 β key={index}
2026-10-25T02:26:58.7814593Z Β· βββββββββββ
2026-10-25T02:26:58.7814676Z 73 β accessibilityRole="button"
2026-10-25T02:26:58.7814724Z β°ββββ
2026-10-25T02:26:58.7814868Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7814870Z
2026-10-25T02:26:58.7815077Z β unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-25T02:26:58.7815213Z ββ[packages/shared/src/composerContextLegacySend.ts:15:45]
2026-10-25T02:26:58.7815335Z 14 β const occurrences = collectComposerContextReferences(text);
2026-10-25T02:26:58.7815447Z 15 β for (const occurrence of [...occurrences].reverse()) {
2026-10-25T02:26:58.7815558Z Β· βββββββ
2026-10-25T02:26:58.7815668Z 16 β const record = recordsById.get(occurrence.contextId);
2026-10-25T02:26:58.7815716Z β°ββββ
2026-10-25T02:26:58.7816008Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-25T02:26:58.7816011Z
2026-10-25T02:26:58.7816339Z β eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7816502Z ββ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1424:7]
2026-10-25T02:26:58.7816555Z 1423 β
2026-10-25T02:26:58.7816666Z 1424 β const layerCodexAppServerClientFactoryCommand = (
2026-10-25T02:26:58.7816786Z Β· ββββββββββββββββββββ¬βββββββββββββββββββ
2026-10-25T02:26:58.7816990Z Β· β°ββ 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-25T02:26:58.7817107Z 1425 β options: CodexClient.CodexAppServerClientOptions & {
2026-10-25T02:26:58.7817158Z β°ββββ
2026-10-25T02:26:58.7817261Z help: Consider removing this declaration.
2026-10-25T02:26:58.7817264Z
2026-10-25T02:26:58.7817514Z β eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7817673Z ββ[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1660:7]
2026-10-25T02:26:58.7817724Z 1659 β
2026-10-25T02:26:58.7817795Z 1660 β const layer: Layer.Layer<
2026-10-25T02:26:58.7817866Z Β· βββ¬ββ
2026-10-25T02:26:58.7817995Z Β· β°ββ 'layer' is declared here
2026-10-25T02:26:58.7818089Z 1661 β ProviderAdapter.ProviderAdapterV2,
2026-10-25T02:26:58.7818139Z β°ββββ
2026-10-25T02:26:58.7818240Z help: Consider removing this declaration.
2026-10-25T02:26:58.7818243Z
2026-10-25T02:26:58.7818493Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7818658Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:641:5]
2026-10-25T02:26:58.7818710Z 636 β
2026-10-25T02:26:58.7818775Z 637 β useEffect(() => {
2026-10-25T02:26:58.7818845Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7818970Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7819146Z 638 β if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-25T02:26:58.7819250Z 639 β return;
2026-10-25T02:26:58.7819335Z 640 β }
2026-10-25T02:26:58.7819412Z 641 β setPendingLaunchEntry({
2026-10-25T02:26:58.7819498Z Β· βββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7819667Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7819737Z 642 β key: launchTargetKey,
2026-10-25T02:26:58.7819787Z β°ββββ
2026-10-25T02:26:58.7820379Z 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-25T02:26:58.7820701Z 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-25T02:26:58.7820706Z
2026-10-25T02:26:58.7820955Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7821119Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:651:5]
2026-10-25T02:26:58.7821170Z 646 β
2026-10-25T02:26:58.7821234Z 647 β useEffect(() => {
2026-10-25T02:26:58.7821304Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7821432Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7821544Z 648 β if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-25T02:26:58.7821604Z 649 β return;
2026-10-25T02:26:58.7821660Z 650 β }
2026-10-25T02:26:58.7821744Z 651 β setInitialAttachGridEntry({
2026-10-25T02:26:58.7821837Z Β· βββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.7822007Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7822076Z 652 β key: launchTargetKey,
2026-10-25T02:26:58.7822127Z β°ββββ
2026-10-25T02:26:58.7822711Z 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-25T02:26:58.7823031Z 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-25T02:26:58.7823036Z
2026-10-25T02:26:58.7823286Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7823449Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:744:7]
2026-10-25T02:26:58.7823500Z 741 β
2026-10-25T02:26:58.7823562Z 742 β useEffect(() => {
2026-10-25T02:26:58.7823630Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7823756Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7823855Z 743 β if (!routeEnvironmentId || !routeThreadId) {
2026-10-25T02:26:58.7823923Z 744 β setLastGridSize({
2026-10-25T02:26:58.7824005Z Β· ββββββββ¬βββββββ
2026-10-25T02:26:58.7824232Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7824376Z 745 β cols: DEFAULT_TERMINAL_COLS,
2026-10-25T02:26:58.7824446Z β°ββββ
2026-10-25T02:26:58.7825029Z 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-25T02:26:58.7825464Z 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-25T02:26:58.7825467Z
2026-10-25T02:26:58.7825667Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7825870Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:536:24]
2026-10-25T02:26:58.7825928Z 535 β });
2026-10-25T02:26:58.7826050Z 536 β }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-25T02:26:58.7826159Z Β· ββββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7826402Z Β· β°ββ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-25T02:26:58.7826562Z 537 β const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-25T02:26:58.7826612Z β°ββββ
2026-10-25T02:26:58.7826901Z 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-25T02:26:58.7827215Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7827221Z
2026-10-25T02:26:58.7827417Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7827581Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:707:7]
2026-10-25T02:26:58.7827676Z 706 β sentInitialInputKeyRef.current = null;
2026-10-25T02:26:58.7827741Z 707 β }, [terminalKey]);
2026-10-25T02:26:58.7827817Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7827958Z Β· β°ββ Unnecessary dependency `terminalKey`
2026-10-25T02:26:58.7828009Z 708 β
2026-10-25T02:26:58.7828064Z β°ββββ
2026-10-25T02:26:58.7828423Z 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-25T02:26:58.7828817Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7828820Z
2026-10-25T02:26:58.7829016Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7829182Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:798:52]
2026-10-25T02:26:58.7829237Z 797 β };
2026-10-25T02:26:58.7829412Z 798 β }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-25T02:26:58.7829589Z Β· βββββββββββββ¬ββββββββββββ ββββββ¬βββββ
2026-10-25T02:26:58.7829821Z Β· β β°ββ Unnecessary dependency `terminalKey`
2026-10-25T02:26:58.7830030Z Β· β°ββ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-25T02:26:58.7830080Z 799 β
2026-10-25T02:26:58.7830131Z β°ββββ
2026-10-25T02:26:58.7830416Z 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-25T02:26:58.7830719Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7830722Z
2026-10-25T02:26:58.7830864Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.7831034Z ββ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:791:24]
2026-10-25T02:26:58.7831089Z 790 β }
2026-10-25T02:26:58.7831194Z 791 β const pasteSession = pasteSessionRef.current;
2026-10-25T02:26:58.7831305Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.7831462Z Β· β°ββ Cannot access ref value during render
2026-10-25T02:26:58.7831515Z 792 β
2026-10-25T02:26:58.7831567Z β°ββββ
2026-10-25T02:26:58.7832026Z 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-25T02:26:58.7832315Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.7832321Z
2026-10-25T02:26:58.7832525Z β eslint(no-unused-vars): Type 'PullRequestChecks' is imported but never used.
2026-10-25T02:26:58.7832687Z ββ[apps/web/src/components/pullRequest/pullRequestDetail.logic.ts:16:8]
2026-10-25T02:26:58.7832758Z 15 β type PullRequestCheck,
2026-10-25T02:26:58.7832827Z 16 β type PullRequestChecks,
2026-10-25T02:26:58.7832912Z Β· βββββββββ¬ββββββββ
2026-10-25T02:26:58.7833058Z Β· β°ββ 'PullRequestChecks' is imported here
2026-10-25T02:26:58.7833190Z 17 β type PullRequestChecksState as ContractPullRequestChecksState,
2026-10-25T02:26:58.7833241Z β°ββββ
2026-10-25T02:26:58.7833337Z help: Consider removing this import.
2026-10-25T02:26:58.7833340Z
2026-10-25T02:26:58.7833650Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7833893Z ββ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-25T02:26:58.7833945Z 118 β
2026-10-25T02:26:58.7834008Z 119 β useEffect(() => {
2026-10-25T02:26:58.7834079Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7834204Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7834287Z 120 β if (orientationSettled) return;
2026-10-25T02:26:58.7834398Z 121 β const orientation = getNativeShowcaseOrientation();
2026-10-25T02:26:58.7834475Z 122 β if (orientation === null) {
2026-10-25T02:26:58.7834555Z 123 β setOrientationSettled(true);
2026-10-25T02:26:58.7834651Z Β· βββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7834821Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7834883Z 124 β return;
2026-10-25T02:26:58.7834935Z β°ββββ
2026-10-25T02:26:58.7835523Z 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-25T02:26:58.7835872Z 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-25T02:26:58.7835877Z
2026-10-25T02:26:58.7836135Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7836305Z ββ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:298:7]
2026-10-25T02:26:58.7836356Z 286 β
2026-10-25T02:26:58.7836420Z 287 β useEffect(() => {
2026-10-25T02:26:58.7836488Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7836613Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7836671Z 288 β if (
2026-10-25T02:26:58.7836736Z 289 β scene === null ||
2026-10-25T02:26:58.7836811Z 290 β requestedScene === null ||
2026-10-25T02:26:58.7836888Z 291 β scene !== requestedScene ||
2026-10-25T02:26:58.7836953Z 292 β !hasFixture ||
2026-10-25T02:26:58.7837023Z 293 β !orientationSettled ||
2026-10-25T02:26:58.7837091Z 294 β !themeApplied ||
2026-10-25T02:26:58.7837210Z 295 β (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-25T02:26:58.7837345Z 296 β !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-25T02:26:58.7837398Z 297 β ) {
2026-10-25T02:26:58.7837468Z 298 β setReadyScene(null);
2026-10-25T02:26:58.7837545Z Β· βββββββ¬ββββββ
2026-10-25T02:26:58.7837713Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7837771Z 299 β return;
2026-10-25T02:26:58.7837824Z β°ββββ
2026-10-25T02:26:58.7838411Z 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-25T02:26:58.7838793Z 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-25T02:26:58.7838828Z
2026-10-25T02:26:58.7839144Z β eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7839310Z ββ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-25T02:26:58.7839379Z 127 β let cancelled = false;
2026-10-25T02:26:58.7839470Z 128 β let lastOutcome: string | null = null;
2026-10-25T02:26:58.7839547Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7839679Z Β· β°ββ 'lastOutcome' is declared here
2026-10-25T02:26:58.7839861Z 129 β void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-25T02:26:58.7839912Z β°ββββ
2026-10-25T02:26:58.7840016Z help: Consider removing this declaration.
2026-10-25T02:26:58.7840019Z
2026-10-25T02:26:58.7840255Z Γ t3code(no-low-value-comments): Cut this to 4 lines or fewer: keep the constraint, drop the background.
2026-10-25T02:26:58.7840397Z ββ[packages/shared/src/orchestrationV2DedupedBodies.ts:13:1]
2026-10-25T02:26:58.7840453Z 12 β
2026-10-25T02:26:58.7840579Z 13 β βββΆ /**
2026-10-25T02:26:58.7840776Z 14 β β * A turn item repeats a body its record already carries: message text, checkpoint files, a
2026-10-25T02:26:58.7840977Z 15 β β * subagent's prompt and result. For clients that opt in, the server blanks the repeat and marks
2026-10-25T02:26:58.7841186Z 16 β β * the field (`textOmitted`, `filesOmitted`, `promptOmitted`, `resultOmitted`), and the client
2026-10-25T02:26:58.7841390Z 17 β β * copies the value back from the record it already holds. Only a body equal to the record's is
2026-10-25T02:26:58.7841500Z 18 β β * blanked, so the restore is exact.
2026-10-25T02:26:58.7841618Z 19 β β°ββΆ */
2026-10-25T02:26:58.7841707Z 20 β export interface DedupedBodySource {
2026-10-25T02:26:58.7841758Z β°ββββ
2026-10-25T02:26:58.7841760Z
2026-10-25T02:26:58.7842013Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7842171Z ββ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-25T02:26:58.7842286Z 37 β const [initialized, setInitialized] = useState(false);
2026-10-25T02:26:58.7842356Z 38 β useLayoutEffect(() => {
2026-10-25T02:26:58.7842434Z Β· ββββββββ¬βββββββ
2026-10-25T02:26:58.7842562Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7842623Z 39 β reset();
2026-10-25T02:26:58.7842690Z 40 β setInitialized(true);
2026-10-25T02:26:58.7842767Z Β· ββββββββ¬ββββββ
2026-10-25T02:26:58.7842933Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7842993Z 41 β }, [reset]);
2026-10-25T02:26:58.7843044Z β°ββββ
2026-10-25T02:26:58.7843701Z 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-25T02:26:58.7844100Z 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-25T02:26:58.7844103Z
2026-10-25T02:26:58.7844353Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7844510Z ββ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-25T02:26:58.7844562Z 88 β
2026-10-25T02:26:58.7844626Z 89 β useEffect(() => {
2026-10-25T02:26:58.7844693Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7844820Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7844982Z 90 β if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-25T02:26:58.7845086Z 91 β const branchName = initialProjectRef.branch;
2026-10-25T02:26:58.7845149Z 92 β let active = true;
2026-10-25T02:26:58.7845244Z 93 β setPendingCheckouts((count) => count + 1);
2026-10-25T02:26:58.7845327Z Β· ββββββββββ¬βββββββββ
2026-10-25T02:26:58.7845493Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7845643Z 94 β // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-25T02:26:58.7845694Z β°ββββ
2026-10-25T02:26:58.7846335Z 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-25T02:26:58.7846652Z 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-25T02:26:58.7846655Z
2026-10-25T02:26:58.7846835Z β react(static-components): Cannot create components during render
2026-10-25T02:26:58.7846992Z ββ[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
2026-10-25T02:26:58.7847077Z 196 β const { onInput, onResize } = props;
2026-10-25T02:26:58.7847223Z 197 β const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
2026-10-25T02:26:58.7847351Z Β· βββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.7847595Z Β· β°ββ The component is created during render here
2026-10-25T02:26:58.7847795Z 198 β const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
2026-10-25T02:26:58.7847847Z 199 β
2026-10-25T02:26:58.7847912Z 200 β useEffect(() => {
2026-10-25T02:26:58.7847998Z 201 β terminalDebugLog("native:surface", {
2026-10-25T02:26:58.7848084Z 202 β terminalKey: props.terminalKey,
2026-10-25T02:26:58.7848158Z 203 β native: hasNativeSurface,
2026-10-25T02:26:58.7848291Z 204 β hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
2026-10-25T02:26:58.7848372Z 205 β bufferLen: props.buffer.length,
2026-10-25T02:26:58.7848450Z 206 β isRunning: props.isRunning,
2026-10-25T02:26:58.7848505Z 207 β });
2026-10-25T02:26:58.7848667Z 208 β }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
2026-10-25T02:26:58.7848756Z 209 β const handleNativeInput = useCallback(
2026-10-25T02:26:58.7848869Z 210 β (event: NativeSyntheticEvent<TerminalInputEvent>) => {
2026-10-25T02:26:58.7848965Z 211 β if (!props.isRunning || props.readOnly) {
2026-10-25T02:26:58.7849026Z 212 β return;
2026-10-25T02:26:58.7849079Z 213 β }
2026-10-25T02:26:58.7849168Z 214 β terminalDebugLog("native:onInput", {
2026-10-25T02:26:58.7849315Z 215 β codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
2026-10-25T02:26:58.7849372Z 216 β });
2026-10-25T02:26:58.7849455Z 217 β onInput(event.nativeEvent.data);
2026-10-25T02:26:58.7849509Z 218 β },
2026-10-25T02:26:58.7849606Z 219 β [onInput, props.isRunning, props.readOnly],
2026-10-25T02:26:58.7849658Z 220 β );
2026-10-25T02:26:58.7849750Z 221 β const handleNativeResize = useCallback(
2026-10-25T02:26:58.7849865Z 222 β (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
2026-10-25T02:26:58.7849927Z 223 β onResize({
2026-10-25T02:26:58.7850008Z 224 β cols: event.nativeEvent.cols,
2026-10-25T02:26:58.7850088Z 225 β rows: event.nativeEvent.rows,
2026-10-25T02:26:58.7850144Z 226 β });
2026-10-25T02:26:58.7850197Z 227 β },
2026-10-25T02:26:58.7850256Z 228 β [onResize],
2026-10-25T02:26:58.7850309Z 229 β );
2026-10-25T02:26:58.7850360Z 230 β
2026-10-25T02:26:58.7850440Z 231 β if (NativeTerminalSurfaceView) {
2026-10-25T02:26:58.7850497Z 232 β return (
2026-10-25T02:26:58.7850574Z 233 β <View style={props.style}>
2026-10-25T02:26:58.7850652Z 234 β <NativeTerminalSurfaceView
2026-10-25T02:26:58.7850755Z Β· βββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.7850916Z Β· β°ββ This component is created during render
2026-10-25T02:26:58.7851013Z 235 β appearanceScheme={themeAppearance}
2026-10-25T02:26:58.7851064Z β°ββββ
2026-10-25T02:26:58.7851308Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-25T02:26:58.7851621Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-25T02:26:58.7851624Z
2026-10-25T02:26:58.7851875Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7852024Z ββ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:410:5]
2026-10-25T02:26:58.7852075Z 408 β
2026-10-25T02:26:58.7852206Z 409 β useEffect(() => {
2026-10-25T02:26:58.7852335Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7852485Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7852575Z 410 β setInspectorSelection((current) => {
2026-10-25T02:26:58.7852659Z Β· βββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7852828Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7852929Z 411 β if (props.renderInspector === undefined) {
2026-10-25T02:26:58.7852979Z β°ββββ
2026-10-25T02:26:58.7853570Z 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-25T02:26:58.7853888Z 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-25T02:26:58.7853890Z
2026-10-25T02:26:58.7854102Z β react(no-unstable-nested-components): Do not define components during render.
2026-10-25T02:26:58.7854253Z ββ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:538:24]
2026-10-25T02:26:58.7854410Z 537 β const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-25T02:26:58.7854573Z 538 β βββΆ const GitInspector = () => (
2026-10-25T02:26:58.7854668Z 539 β β <GitOverviewSheet
2026-10-25T02:26:58.7854791Z 540 β β headerInset={inspectorHeaderInset}
2026-10-25T02:26:58.7854898Z 541 β β presentation="inspector"
2026-10-25T02:26:58.7855073Z 542 β β route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-25T02:26:58.7855146Z 543 β β />
2026-10-25T02:26:58.7855273Z 544 β β°ββΆ );
2026-10-25T02:26:58.7855351Z 545 β const FilesInspector = () =>
2026-10-25T02:26:58.7855401Z β°ββββ
2026-10-25T02:26:58.7855615Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-25T02:26:58.7855618Z
2026-10-25T02:26:58.7855859Z β react(no-unstable-nested-components): Do not define components during render.
2026-10-25T02:26:58.7856023Z ββ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:545:26]
2026-10-25T02:26:58.7856083Z 544 β );
2026-10-25T02:26:58.7856244Z 545 β βββΆ const FilesInspector = () =>
2026-10-25T02:26:58.7856393Z 546 β β selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-25T02:26:58.7856501Z 547 β β <ThreadFileNavigatorPane
2026-10-25T02:26:58.7856605Z 548 β β cwd={selectedThreadCwd}
2026-10-25T02:26:58.7856741Z 549 β β environmentId={selectedThread.environmentId}
2026-10-25T02:26:58.7856861Z 550 β β headerInset={inspectorHeaderInset}
2026-10-25T02:26:58.7857007Z 551 β β projectName={selectedThreadProject?.title ?? "Files"}
2026-10-25T02:26:58.7857229Z 552 β β selectedPath={null}
2026-10-25T02:26:58.7857436Z 553 β β onSelectFile={handleSelectInspectorFile}
2026-10-25T02:26:58.7857512Z 554 β β />
2026-10-25T02:26:58.7857647Z 555 β β°ββΆ ) : null;
2026-10-25T02:26:58.7857797Z 556 β const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-25T02:26:58.7857845Z β°ββββ
2026-10-25T02:26:58.7858059Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-25T02:26:58.7858061Z
2026-10-25T02:26:58.7858317Z β unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-25T02:26:58.7858462Z ββ[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-25T02:26:58.7858614Z 11 β addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-25T02:26:58.7858689Z 12 β this.onmessage = listener;
2026-10-25T02:26:58.7858768Z Β· βββββββββ
2026-10-25T02:26:58.7858822Z 13 β }
2026-10-25T02:26:58.7858872Z β°ββββ
2026-10-25T02:26:58.7859186Z help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-25T02:26:58.7859189Z
2026-10-25T02:26:58.7859392Z β typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-25T02:26:58.7859533Z ββ[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-25T02:26:58.7859600Z 15 β constructor() {
2026-10-25T02:26:58.7859669Z 16 β source = this;
2026-10-25T02:26:58.7859742Z Β· ββββββ
2026-10-25T02:26:58.7859796Z 17 β }
2026-10-25T02:26:58.7859846Z β°ββββ
2026-10-25T02:26:58.7860112Z 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-25T02:26:58.7860114Z
2026-10-25T02:26:58.7860295Z β eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-25T02:26:58.7860400Z ββ[packages/shared/src/qrCode.ts:458:44]
2026-10-25T02:26:58.7860462Z 457 β ): Array<byte> {
2026-10-25T02:26:58.7860568Z 458 β let result: Array<byte> = divisor.map((_) => 0);
2026-10-25T02:26:58.7860667Z Β· β¬
2026-10-25T02:26:58.7860815Z Β· β°ββ '_' is declared here
2026-10-25T02:26:58.7860886Z 459 β for (const b of data) {
2026-10-25T02:26:58.7860936Z β°ββββ
2026-10-25T02:26:58.7861038Z help: Consider removing this parameter.
2026-10-25T02:26:58.7861041Z
2026-10-25T02:26:58.7861287Z β eslint(no-unused-vars): Function 'layerClaudeAgentSdkReplayQueryRunner' is declared but never used.
2026-10-25T02:26:58.7861464Z ββ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts:956:10]
2026-10-25T02:26:58.7861514Z 955 β
2026-10-25T02:26:58.7861624Z 956 β function layerClaudeAgentSdkReplayQueryRunner(
2026-10-25T02:26:58.7861735Z Β· βββββββββββββββββββ¬βββββββββββββββββ
2026-10-25T02:26:58.7861930Z Β· β°ββ 'layerClaudeAgentSdkReplayQueryRunner' is declared here
2026-10-25T02:26:58.7862096Z 957 β transcript: ClaudeAgentSdkReplayTranscript,
2026-10-25T02:26:58.7862181Z β°ββββ
2026-10-25T02:26:58.7862327Z help: Consider removing this declaration.
2026-10-25T02:26:58.7862329Z
2026-10-25T02:26:58.7862580Z β eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7862749Z ββ[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10520:7]
2026-10-25T02:26:58.7862802Z 10519 β
2026-10-25T02:26:58.7862874Z 10520 β const layer: Layer.Layer<
2026-10-25T02:26:58.7862944Z Β· βββ¬ββ
2026-10-25T02:26:58.7863067Z Β· β°ββ 'layer' is declared here
2026-10-25T02:26:58.7863160Z 10521 β ProviderAdapter.ProviderAdapterV2,
2026-10-25T02:26:58.7863213Z β°ββββ
2026-10-25T02:26:58.7863320Z help: Consider removing this declaration.
2026-10-25T02:26:58.7863325Z
2026-10-25T02:26:58.7863489Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7863624Z ββ[apps/server/src/process/externalLauncher.test.ts:183:12]
2026-10-25T02:26:58.7863676Z 182 β
2026-10-25T02:26:58.7863775Z 183 β for (const {} of ["darwin", "linux"] as const) {
2026-10-25T02:26:58.7863844Z Β· ββ
2026-10-25T02:26:58.7863894Z 184 β }
2026-10-25T02:26:58.7863944Z β°ββββ
2026-10-25T02:26:58.7864169Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7864171Z
2026-10-25T02:26:58.7864332Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7864471Z ββ[apps/server/src/process/externalLauncher.test.ts:186:12]
2026-10-25T02:26:58.7864524Z 185 β
2026-10-25T02:26:58.7864588Z 186 β for (const {} of [
2026-10-25T02:26:58.7864656Z Β· ββ
2026-10-25T02:26:58.7864744Z 187 β { kind: "browser", folderVerb: "none" },
2026-10-25T02:26:58.7864794Z β°ββββ
2026-10-25T02:26:58.7865016Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7865019Z
2026-10-25T02:26:58.7865183Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7865526Z ββ[apps/server/src/process/externalLauncher.test.ts:308:12]
2026-10-25T02:26:58.7865577Z 307 β
2026-10-25T02:26:58.7865702Z 308 β for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
2026-10-25T02:26:58.7865775Z Β· ββ
2026-10-25T02:26:58.7865864Z 309 β }
2026-10-25T02:26:58.7865915Z β°ββββ
2026-10-25T02:26:58.7866137Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7866139Z
2026-10-25T02:26:58.7866299Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7866430Z ββ[apps/server/src/process/externalLauncher.test.ts:311:12]
2026-10-25T02:26:58.7866481Z 310 β
2026-10-25T02:26:58.7866545Z 311 β for (const {} of [
2026-10-25T02:26:58.7866612Z Β· ββ
2026-10-25T02:26:58.7866664Z 312 β {
2026-10-25T02:26:58.7866714Z β°ββββ
2026-10-25T02:26:58.7867008Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7867048Z
2026-10-25T02:26:58.7867362Z β unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-25T02:26:58.7867529Z ββ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:2143:15]
2026-10-25T02:26:58.7867595Z 2142 β assert.equal(
2026-10-25T02:26:58.7867744Z 2143 β items.filter((item) => item.type === "assistant_message").at(-1)?.text,
2026-10-25T02:26:58.7867824Z Β· ββββββ
2026-10-25T02:26:58.7867899Z 2144 β "authoritative answer",
2026-10-25T02:26:58.7867953Z β°ββββ
2026-10-25T02:26:58.7868121Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-25T02:26:58.7868123Z
2026-10-25T02:26:58.7868594Z β 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-25T02:26:58.7868764Z ββ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:4245:7]
2026-10-25T02:26:58.7868941Z 4244 β const closeFiber = yield* Scope.close(sessionScope, Exit.void).pipe(Effect.forkScoped);
2026-10-25T02:26:58.7869144Z 4245 β βββΆ while (!responseLifecycle.includes("failed")) {
2026-10-25T02:26:58.7869252Z 4246 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7869383Z 4247 β β°ββΆ }
2026-10-25T02:26:58.7869502Z 4248 β const responseExit = yield* Fiber.join(responseFiber);
2026-10-25T02:26:58.7869561Z β°ββββ
2026-10-25T02:26:58.7869566Z
2026-10-25T02:26:58.7870022Z β 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-25T02:26:58.7870187Z ββ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6355:9]
2026-10-25T02:26:58.7870274Z 6354 β .pipe(Effect.forkScoped);
2026-10-25T02:26:58.7870457Z 6355 β βββΆ while (promptGates.length < 1) {
2026-10-25T02:26:58.7870566Z 6356 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7870699Z 6357 β β°ββΆ }
2026-10-25T02:26:58.7870872Z 6358 β assert.isDefined(sessionUpdateHandler, "session update handler must be wired");
2026-10-25T02:26:58.7870925Z β°ββββ
2026-10-25T02:26:58.7870927Z
2026-10-25T02:26:58.7871393Z β 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-25T02:26:58.7871556Z ββ[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6490:9]
2026-10-25T02:26:58.7871643Z 6489 β .pipe(Effect.forkScoped);
2026-10-25T02:26:58.7871821Z 6490 β βββΆ while (promptGates.length < 2) {
2026-10-25T02:26:58.7871929Z 6491 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7872121Z 6492 β β°ββΆ }
2026-10-25T02:26:58.7872378Z 6493 β if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-25T02:26:58.7872427Z β°ββββ
2026-10-25T02:26:58.7872431Z
2026-10-25T02:26:58.7872882Z β 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-25T02:26:58.7873048Z ββ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-25T02:26:58.7873149Z 565 β let afterSequence = created[0]!.sequence;
2026-10-25T02:26:58.7873337Z 566 β βββΆ for (let index = 1; index <= 32; index += 1) {
2026-10-25T02:26:58.7873441Z 567 β β const nextEvent = {
2026-10-25T02:26:58.7873600Z 568 β β id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-25T02:26:58.7873730Z 569 β β type: "thread.metadata-updated" as const,
2026-10-25T02:26:58.7873819Z 570 β β threadId,
2026-10-25T02:26:58.7873921Z 571 β β providerInstanceId,
2026-10-25T02:26:58.7874021Z 572 β β occurredAt: now,
2026-10-25T02:26:58.7874166Z 573 β β payload: { ...thread, title: `Race update ${index}` },
2026-10-25T02:26:58.7874291Z 574 β β } satisfies OrchestrationV2DomainEvent;
2026-10-25T02:26:58.7874402Z 575 β β const reader = yield* eventSink
2026-10-25T02:26:58.7874528Z 576 β β .stream({ threadId, afterSequence })
2026-10-25T02:26:58.7874660Z 577 β β .pipe(Stream.runHead, Effect.forkChild);
2026-10-25T02:26:58.7874764Z 578 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7874923Z 579 β β const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-25T02:26:58.7875049Z 580 β β const received = yield* Fiber.join(reader);
2026-10-25T02:26:58.7875163Z 581 β β if (Option.isNone(received)) {
2026-10-25T02:26:58.7875360Z 582 β β return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-25T02:26:58.7875438Z 583 β β }
2026-10-25T02:26:58.7875595Z 584 β β assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-25T02:26:58.7875744Z 585 β β assert.equal(received.value.event.id, nextEvent.id);
2026-10-25T02:26:58.7875906Z 586 β β afterSequence = received.value.sequence;
2026-10-25T02:26:58.7876042Z 587 β β°ββΆ }
2026-10-25T02:26:58.7876100Z 588 β }),
2026-10-25T02:26:58.7876155Z β°ββββ
2026-10-25T02:26:58.7876157Z
2026-10-25T02:26:58.7876609Z β 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-25T02:26:58.7876781Z ββ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2324:9]
2026-10-25T02:26:58.7876856Z 2323 β let settled = false;
2026-10-25T02:26:58.7877076Z 2324 β βββΆ while (!settled) {
2026-10-25T02:26:58.7877316Z 2325 β β settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-25T02:26:58.7877448Z 2326 β β (effect) => effect.status === "succeeded",
2026-10-25T02:26:58.7877529Z 2327 β β );
2026-10-25T02:26:58.7877652Z 2328 β β if (!settled) yield* Effect.yieldNow;
2026-10-25T02:26:58.7877785Z 2329 β β°ββΆ }
2026-10-25T02:26:58.7877901Z 2330 β }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-25T02:26:58.7877952Z β°ββββ
2026-10-25T02:26:58.7877954Z
2026-10-25T02:26:58.7878179Z β unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-25T02:26:58.7878304Z ββ[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-25T02:26:58.7878360Z 730 β );
2026-10-25T02:26:58.7878529Z 731 β const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-25T02:26:58.7878624Z Β· ββββββ
2026-10-25T02:26:58.7878736Z 732 β expect(snapshot?.history).toBe("aaπ\rEND");
2026-10-25T02:26:58.7878788Z β°ββββ
2026-10-25T02:26:58.7878957Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-25T02:26:58.7878959Z
2026-10-25T02:26:58.7879152Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7879331Z ββ[apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx:84:15]
2026-10-25T02:26:58.7879399Z 83 β <li
2026-10-25T02:26:58.7879487Z 84 β key={`${index}:${check.name}`}
2026-10-25T02:26:58.7879596Z Β· ββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7879744Z 85 β className="col-span-full grid grid-cols-subgrid items-center text-xs"
2026-10-25T02:26:58.7879795Z β°ββββ
2026-10-25T02:26:58.7879941Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7879944Z
2026-10-25T02:26:58.7880142Z β eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-25T02:26:58.7880235Z ββ[apps/web/src/types.ts:22:3]
2026-10-25T02:26:58.7880306Z 21 β EnvironmentThreadShell,
2026-10-25T02:26:58.7880372Z 22 β ThreadRunSummary,
2026-10-25T02:26:58.7880512Z Β· βββββββββ¬βββββββ
2026-10-25T02:26:58.7880731Z Β· β°ββ 'ThreadRunSummary' is imported here
2026-10-25T02:26:58.7880803Z 23 β ThreadRuntimeSummary,
2026-10-25T02:26:58.7880853Z β°ββββ
2026-10-25T02:26:58.7880949Z help: Consider removing this import.
2026-10-25T02:26:58.7880952Z
2026-10-25T02:26:58.7881162Z β react(no-unstable-nested-components): Do not define components during render.
2026-10-25T02:26:58.7881263Z ββ[apps/mobile/src/Stack.tsx:1062:21]
2026-10-25T02:26:58.7881327Z 1061 β <Navigator
2026-10-25T02:26:58.7881455Z 1062 β screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-25T02:26:58.7881592Z Β· βββββββββββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7881674Z 1063 β screenOptions={({ route }) =>
2026-10-25T02:26:58.7881733Z β°ββββ
2026-10-25T02:26:58.7882091Z help: Move this component definition out of the parent component `AdaptiveRootStack` and pass data as props. If you want to allow component creation in props, set `allowAsProps` option to true.
2026-10-25T02:26:58.7882096Z
2026-10-25T02:26:58.7882547Z β t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-25T02:26:58.7882673Z ββ[packages/effect-acp/src/errors.test.ts:129:28]
2026-10-25T02:26:58.7882765Z 128 β const secret = "acp-summary-secret";
2026-10-25T02:26:58.7882875Z 129 β const cause = yield* Schema.decodeUnknownEffect(
2026-10-25T02:26:58.7882988Z Β· ββββββββββββββββββββββββββ
2026-10-25T02:26:58.7883064Z 130 β Schema.Struct({
2026-10-25T02:26:58.7883119Z β°ββββ
2026-10-25T02:26:58.7883122Z
2026-10-25T02:26:58.7883387Z β eslint(no-unused-vars): Variable 'navigation' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7883551Z ββ[apps/mobile/src/features/workspace/WorkspaceSidebarTabs.ios.tsx:32:9]
2026-10-25T02:26:58.7883697Z 31 β const tabs = [...visibleNavigationTabs(order, hidden), "settings" as const];
2026-10-25T02:26:58.7883779Z 32 β const navigation = useNavigation();
2026-10-25T02:26:58.7883855Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7883987Z Β· β°ββ 'navigation' is declared here
2026-10-25T02:26:58.7884080Z 33 β const selectTab = useSelectWorkspaceTab();
2026-10-25T02:26:58.7884131Z β°ββββ
2026-10-25T02:26:58.7884241Z help: Consider removing this declaration.
2026-10-25T02:26:58.7884246Z
2026-10-25T02:26:58.7884499Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7884684Z ββ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-25T02:26:58.7884739Z 104 β
2026-10-25T02:26:58.7884804Z 105 β useEffect(() => {
2026-10-25T02:26:58.7884877Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7885004Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7885083Z 106 β clearReviewCommentTarget();
2026-10-25T02:26:58.7885179Z 107 β setPendingNativeCommentSelection(null);
2026-10-25T02:26:58.7885280Z Β· βββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.7885534Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7885676Z 108 β }, [selectedSection?.id]);
2026-10-25T02:26:58.7885754Z β°ββββ
2026-10-25T02:26:58.7886389Z 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-25T02:26:58.7886707Z 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-25T02:26:58.7886710Z
2026-10-25T02:26:58.7886966Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7887150Z ββ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-25T02:26:58.7887204Z 109 β
2026-10-25T02:26:58.7887267Z 110 β useEffect(() => {
2026-10-25T02:26:58.7887336Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7887463Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7887551Z 111 β if (activeCommentTarget === null) {
2026-10-25T02:26:58.7887649Z 112 β setPendingNativeCommentSelection(null);
2026-10-25T02:26:58.7887756Z Β· βββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.7887934Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7887990Z 113 β }
2026-10-25T02:26:58.7888039Z β°ββββ
2026-10-25T02:26:58.7888632Z 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-25T02:26:58.7888952Z 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-25T02:26:58.7888954Z
2026-10-25T02:26:58.7889153Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7889337Z ββ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-25T02:26:58.7889433Z 107 β setPendingNativeCommentSelection(null);
2026-10-25T02:26:58.7889512Z 108 β }, [selectedSection?.id]);
2026-10-25T02:26:58.7889601Z Β· ββββββββββ¬βββββββββ
2026-10-25T02:26:58.7889760Z Β· β°ββ Unnecessary dependency `selectedSection?.id`
2026-10-25T02:26:58.7889810Z 109 β
2026-10-25T02:26:58.7889862Z β°ββββ
2026-10-25T02:26:58.7890154Z 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-25T02:26:58.7890459Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7890462Z
2026-10-25T02:26:58.7890690Z β unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-25T02:26:58.7890920Z ββ[apps/web/src/components/pullRequest/pullRequestList.logic.ts:262:9]
2026-10-25T02:26:58.7891028Z 261 β ): boolean {
2026-10-25T02:26:58.7891215Z 262 β const labels = entry.labels.map((label) => label.name.trim().toLowerCase());
2026-10-25T02:26:58.7891374Z Β· βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7891518Z 263 β const holds = (label: string) => labels.includes(label.trim().toLowerCase());
2026-10-25T02:26:58.7891571Z β°ββββ
2026-10-25T02:26:58.7891649Z help: Switch to `Set`
2026-10-25T02:26:58.7891652Z
2026-10-25T02:26:58.7892020Z β 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-25T02:26:58.7892136Z ββ[packages/effect-acp/src/client.ts:1270:11]
2026-10-25T02:26:58.7892289Z 1269 β extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
2026-10-25T02:26:58.7892464Z 1270 β Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
2026-10-25T02:26:58.7892569Z Β· ββββββββββββββββββββββββββ
2026-10-25T02:26:58.7892713Z 1271 β Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
2026-10-25T02:26:58.7892763Z β°ββββ
2026-10-25T02:26:58.7892766Z
2026-10-25T02:26:58.7893218Z β t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-25T02:26:58.7893343Z ββ[packages/effect-acp/src/protocol.test.ts:500:31]
2026-10-25T02:26:58.7893396Z 499 β
2026-10-25T02:26:58.7893513Z 500 β const response = yield* Schema.decodeUnknownEffect(
2026-10-25T02:26:58.7893633Z Β· ββββββββββββββββββββββββββ
2026-10-25T02:26:58.7893741Z 501 β Schema.fromJsonString(JsonRpcErrorResponse),
2026-10-25T02:26:58.7893792Z β°ββββ
2026-10-25T02:26:58.7893795Z
2026-10-25T02:26:58.7894045Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7894218Z ββ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:59:5]
2026-10-25T02:26:58.7894271Z 49 β
2026-10-25T02:26:58.7894338Z 50 β useEffect(() => {
2026-10-25T02:26:58.7894406Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7894532Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7894688Z 51 β traceDiffHighlight("viewport-reset", {
2026-10-25T02:26:58.7894841Z 52 β reset: diffHighlightTraceId(resetKey),
2026-10-25T02:26:58.7894922Z 53 β enabled,
2026-10-25T02:26:58.7894989Z 54 β rows: rows.length,
2026-10-25T02:26:58.7895045Z 55 β });
2026-10-25T02:26:58.7895135Z 56 β const previousRange = scheduler.reset();
2026-10-25T02:26:58.7895229Z 57 β highlightedRowIdsRef.current = new Set();
2026-10-25T02:26:58.7895315Z 58 β pendingPatchesRef.current = [];
2026-10-25T02:26:58.7895424Z 59 β setViewport({ scope: viewportScope, range: null });
2026-10-25T02:26:58.7895499Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7895664Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7895778Z 60 β setTokensPatchJson(createEmptyTokenPatch(resetKey));
2026-10-25T02:26:58.7895844Z β°ββββ
2026-10-25T02:26:58.7896486Z 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-25T02:26:58.7896804Z 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-25T02:26:58.7896808Z
2026-10-25T02:26:58.7896998Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7897148Z ββ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-25T02:26:58.7897255Z 222 β ? snippetTokens.map((line, lineIndex) => (
2026-10-25T02:26:58.7897354Z 223 β <NativeText key={lineIndex}>
2026-10-25T02:26:58.7897460Z Β· βββββββββββββββ
2026-10-25T02:26:58.7897554Z 224 β {lineIndex > 0 ? "\n" : ""}
2026-10-25T02:26:58.7897608Z β°ββββ
2026-10-25T02:26:58.7897757Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7897760Z
2026-10-25T02:26:58.7897948Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7898096Z ββ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-25T02:26:58.7898172Z 226 β <NativeText
2026-10-25T02:26:58.7898257Z 227 β key={tokenIndex}
2026-10-25T02:26:58.7898358Z Β· ββββββββββββββββ
2026-10-25T02:26:58.7898438Z 228 β style={{
2026-10-25T02:26:58.7898492Z β°ββββ
2026-10-25T02:26:58.7898636Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7898638Z
2026-10-25T02:26:58.7898918Z β react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-25T02:26:58.7899084Z ββ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:469:19]
2026-10-25T02:26:58.7899146Z 468 β onFilters,
2026-10-25T02:26:58.7899215Z 469 β authorOptions = [],
2026-10-25T02:26:58.7899289Z Β· ββ
2026-10-25T02:26:58.7899357Z 470 β labelOptions = [],
2026-10-25T02:26:58.7899409Z β°ββββ
2026-10-25T02:26:58.7899790Z 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-25T02:26:58.7899822Z
2026-10-25T02:26:58.7900150Z β react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-25T02:26:58.7900314Z ββ[apps/web/src/components/pullRequest/PullRequestListFilters.tsx:470:18]
2026-10-25T02:26:58.7900381Z 469 β authorOptions = [],
2026-10-25T02:26:58.7900449Z 470 β labelOptions = [],
2026-10-25T02:26:58.7900527Z Β· ββ
2026-10-25T02:26:58.7900591Z 471 β optionScope,
2026-10-25T02:26:58.7900643Z β°ββββ
2026-10-25T02:26:58.7900953Z 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-25T02:26:58.7900956Z
2026-10-25T02:26:58.7901413Z β 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-25T02:26:58.7901539Z ββ[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-25T02:26:58.7901606Z 38 β JSON.stringify(
2026-10-25T02:26:58.7901724Z 39 β Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-25T02:26:58.7901823Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.7901887Z 40 β { name: "a" },
2026-10-25T02:26:58.7901939Z β°ββββ
2026-10-25T02:26:58.7901941Z
2026-10-25T02:26:58.7902139Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7902303Z ββ[apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx:114:33]
2026-10-25T02:26:58.7902400Z 113 β return () => cancelAnimationFrame(frame);
2026-10-25T02:26:58.7902497Z 114 β }, [restoreSearch, tabActive, bottomSearch]);
2026-10-25T02:26:58.7902603Z Β· βββββββ¬βββββ
2026-10-25T02:26:58.7902771Z Β· β°ββ Unnecessary dependency `bottomSearch`
2026-10-25T02:26:58.7902873Z 115 β const composeButton = nativeToolbarCompose ? (
2026-10-25T02:26:58.7902924Z β°ββββ
2026-10-25T02:26:58.7903218Z 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-25T02:26:58.7903532Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7903537Z
2026-10-25T02:26:58.7903737Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7903869Z ββ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
2026-10-25T02:26:58.7903953Z 453 β showAuxiliaryPane("inspector");
2026-10-25T02:26:58.7904061Z 454 β }, [environmentId, showAuxiliaryPane, threadId]);
2026-10-25T02:26:58.7904204Z Β· βββββββ¬ββββββ βββββ¬βββ
2026-10-25T02:26:58.7904399Z Β· β β°ββ Unnecessary dependency `threadId`
2026-10-25T02:26:58.7904549Z Β· β°ββ Unnecessary dependency `environmentId`
2026-10-25T02:26:58.7904610Z 455 β const {
2026-10-25T02:26:58.7904725Z β°ββββ
2026-10-25T02:26:58.7905093Z 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-25T02:26:58.7905531Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7905534Z
2026-10-25T02:26:58.7905725Z β react(static-components): Cannot create components during render
2026-10-25T02:26:58.7905892Z ββ[apps/mobile/src/features/review/ReviewSheet.tsx:722:20]
2026-10-25T02:26:58.7906050Z 489 β // Expo may return null before registration or in older binaries; use the fallback.
2026-10-25T02:26:58.7906174Z 490 β const NativeReviewDiffView = resolveNativeReviewDiffView();
2026-10-25T02:26:58.7906299Z Β· ββββββββββββββ¬βββββββββββββ
2026-10-25T02:26:58.7906480Z Β· β°ββ The component is created during render here
2026-10-25T02:26:58.7906632Z 491 β const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
2026-10-25T02:26:58.7906750Z 492 β const showcasedReviewDrawRef = useRef<string | null>(null);
2026-10-25T02:26:58.7906882Z 493 β const [isPullRefreshing, setIsPullRefreshing] = useState(false);
2026-10-25T02:26:58.7906976Z 494 β const handlePullToRefresh = async () => {
2026-10-25T02:26:58.7907054Z 495 β setIsPullRefreshing(true);
2026-10-25T02:26:58.7907137Z 496 β await refreshSelectedSection();
2026-10-25T02:26:58.7907213Z 497 β setIsPullRefreshing(false);
2026-10-25T02:26:58.7907268Z 498 β };
2026-10-25T02:26:58.7907416Z 499 β const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
2026-10-25T02:26:58.7907557Z 500 β const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
2026-10-25T02:26:58.7907663Z 501 β const fileVisibility = useReviewFileVisibility({
2026-10-25T02:26:58.7907751Z 502 β threadKey: reviewCache.threadKey,
2026-10-25T02:26:58.7907842Z 503 β sectionId: selectedSection?.id ?? null,
2026-10-25T02:26:58.7907908Z 504 β files: reviewFiles,
2026-10-25T02:26:58.7908010Z 505 β cachedExpandedFileIds: selectedSection?.id
2026-10-25T02:26:58.7908140Z 506 β ? reviewCache.expandedFileIdsBySection[selectedSection.id]
2026-10-25T02:26:58.7908206Z 507 β : undefined,
2026-10-25T02:26:58.7908298Z 508 β cachedViewedFileIds: selectedSection?.id
2026-10-25T02:26:58.7908424Z 509 β ? reviewCache.viewedFileIdsBySection[selectedSection.id]
2026-10-25T02:26:58.7908487Z 510 β : undefined,
2026-10-25T02:26:58.7908549Z 511 β });
2026-10-25T02:26:58.7908739Z 512 β const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
2026-10-25T02:26:58.7908870Z 513 β const commentSelection = useReviewCommentSelectionController({
2026-10-25T02:26:58.7908934Z 514 β environmentId,
2026-10-25T02:26:58.7908995Z 515 β threadId,
2026-10-25T02:26:58.7909058Z 516 β selectedSection,
2026-10-25T02:26:58.7909129Z 517 β nativeReviewDiffData,
2026-10-25T02:26:58.7909184Z 518 β });
2026-10-25T02:26:58.7909289Z 519 β const nativeBridge = useNativeReviewDiffBridge({
2026-10-25T02:26:58.7909373Z 520 β threadKey: reviewCache.threadKey,
2026-10-25T02:26:58.7909461Z 521 β sectionId: selectedSection?.id ?? null,
2026-10-25T02:26:58.7909540Z 522 β diff: selectedSection?.diff,
2026-10-25T02:26:58.7909697Z 523 β data: nativeReviewDiffData,
2026-10-25T02:26:58.7909818Z 524 β collapsedFileIds,
2026-10-25T02:26:58.7909916Z 525 β viewedFileIds,
2026-10-25T02:26:58.7910031Z 526 β selectedRowIds: commentSelection.selectedRowIds,
2026-10-25T02:26:58.7910126Z 527 β canHighlight: parsedDiff.kind === "files",
2026-10-25T02:26:58.7910181Z 528 β });
2026-10-25T02:26:58.7910254Z 529 β const showcaseReviewKey =
2026-10-25T02:26:58.7911898Z 530 β SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
2026-10-25T02:26:58.7912109Z 531 β ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
2026-10-25T02:26:58.7912170Z 532 β : null;
2026-10-25T02:26:58.7912335Z 533 β const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
2026-10-25T02:26:58.7912411Z 534 β nativeBridge.onDebug(event);
2026-10-25T02:26:58.7912474Z 535 β if (
2026-10-25T02:26:58.7912554Z 536 β showcaseReviewKey === null ||
2026-10-25T02:26:58.7912674Z 537 β showcasedReviewDrawRef.current === showcaseReviewKey ||
2026-10-25T02:26:58.7912784Z 538 β !isNativeReviewDiffDrawEvent(event.nativeEvent)
2026-10-25T02:26:58.7912838Z 539 β ) {
2026-10-25T02:26:58.7912897Z 540 β return;
2026-10-25T02:26:58.7912950Z 541 β }
2026-10-25T02:26:58.7913061Z 542 β showcasedReviewDrawRef.current = showcaseReviewKey;
2026-10-25T02:26:58.7913221Z 543 β reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
2026-10-25T02:26:58.7913274Z 544 β };
2026-10-25T02:26:58.7913325Z 545 β
2026-10-25T02:26:58.7913442Z 546 β const handleSelectFile = async (fileId: string | null) => {
2026-10-25T02:26:58.7913520Z 547 β loadVisibleFile(fileId, true);
2026-10-25T02:26:58.7913613Z 548 β commentSelection.clearSelection();
2026-10-25T02:26:58.7913735Z 549 β if (fileId !== null && collapsedFileIds.includes(fileId)) {
2026-10-25T02:26:58.7913813Z 550 β toggleExpandedFile(fileId);
2026-10-25T02:26:58.7913865Z 551 β }
2026-10-25T02:26:58.7913975Z 552 β const nativeView = nativeReviewDiffViewRef.current;
2026-10-25T02:26:58.7914045Z 553 β if (!nativeView) return;
2026-10-25T02:26:58.7914136Z 554 β const result = await settlePromise(() =>
2026-10-25T02:26:58.7914308Z 555 β fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
2026-10-25T02:26:58.7914362Z 556 β );
2026-10-25T02:26:58.7914450Z 557 β if (AsyncResult.isFailure(result)) {
2026-10-25T02:26:58.7914626Z 558 β console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
2026-10-25T02:26:58.7914680Z 559 β }
2026-10-25T02:26:58.7914737Z 560 β };
2026-10-25T02:26:58.7914820Z 561 β const handleVisibleFileChange = (
2026-10-25T02:26:58.7914948Z 562 β event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
2026-10-25T02:26:58.7915008Z 563 β ) => {
2026-10-25T02:26:58.7915116Z 564 β loadVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-25T02:26:58.7915282Z 565 β reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
2026-10-25T02:26:58.7915334Z 566 β };
2026-10-25T02:26:58.7915412Z 567 β const renderInspector = () => (
2026-10-25T02:26:58.7915480Z 568 β <ReviewFileNavigator
2026-10-25T02:26:58.7915560Z 569 β ref={reviewFileNavigatorRef}
2026-10-25T02:26:58.7915647Z 570 β files={nativeReviewDiffData.files}
2026-10-25T02:26:58.7915721Z 571 β headerInset={insets.top}
2026-10-25T02:26:58.7915811Z 572 β sectionId={selectedSection?.id ?? null}
2026-10-25T02:26:58.7916054Z 573 β onSelectFile={(fileId) => void handleSelectFile(fileId)}
2026-10-25T02:26:58.7916146Z 574 β />
2026-10-25T02:26:58.7916230Z 575 β );
2026-10-25T02:26:58.7916299Z 576 β
2026-10-25T02:26:58.7916480Z 577 β const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
2026-10-25T02:26:58.7916564Z 578 β const { fileId } = event.nativeEvent;
2026-10-25T02:26:58.7916627Z 579 β if (fileId) {
2026-10-25T02:26:58.7916707Z 580 β loadVisibleFile(fileId, true);
2026-10-25T02:26:58.7916785Z 581 β toggleExpandedFile(fileId);
2026-10-25T02:26:58.7916836Z 582 β }
2026-10-25T02:26:58.7916889Z 583 β };
2026-10-25T02:26:58.7916940Z 584 β
2026-10-25T02:26:58.7917027Z 585 β const handleNativeToggleViewedFile = (
2026-10-25T02:26:58.7917145Z 586 β event: NativeSyntheticEvent<{ readonly fileId?: string }>,
2026-10-25T02:26:58.7917205Z 587 β ) => {
2026-10-25T02:26:58.7917293Z 588 β const { fileId } = event.nativeEvent;
2026-10-25T02:26:58.7917352Z 589 β if (fileId) {
2026-10-25T02:26:58.7917427Z 590 β toggleViewedFile(fileId);
2026-10-25T02:26:58.7917480Z 591 β }
2026-10-25T02:26:58.7917533Z 592 β };
2026-10-25T02:26:58.7917584Z 593 β
2026-10-25T02:26:58.7917655Z 594 β const parsedDiffNotice =
2026-10-25T02:26:58.7917813Z 595 β parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
2026-10-25T02:26:58.7917933Z 596 β const hasCachedSelectedDiff = selectedSection?.diff != null;
2026-10-25T02:26:58.7918085Z 597 β const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
2026-10-25T02:26:58.7918204Z 598 β const sectionMenu = buildReviewSectionMenu(reviewSections);
2026-10-25T02:26:58.7918366Z 599 β const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
2026-10-25T02:26:58.7918478Z 600 β hasEnvironmentPresentation: environment.isReady,
2026-10-25T02:26:58.7918577Z 601 β isEnvironmentConnected: isEnvironmentReady,
2026-10-25T02:26:58.7918648Z 602 β hasCachedSelectedDiff,
2026-10-25T02:26:58.7918713Z 603 β hasAnyCachedDiff,
2026-10-25T02:26:58.7918766Z 604 β });
2026-10-25T02:26:58.7918852Z 605 β const handleRetryEnvironment = () => {
2026-10-25T02:26:58.7918939Z 606 β void retryEnvironment(environmentId);
2026-10-25T02:26:58.7918992Z 607 β };
2026-10-25T02:26:58.7919074Z 608 β const handleReturnToThread = () => {
2026-10-25T02:26:58.7919151Z 609 β if (navigation.canGoBack()) {
2026-10-25T02:26:58.7919221Z 610 β navigation.goBack();
2026-10-25T02:26:58.7919281Z 611 β return;
2026-10-25T02:26:58.7919332Z 612 β }
2026-10-25T02:26:58.7919417Z 613 β navigation.navigate("Thread", {
2026-10-25T02:26:58.7919509Z 614 β environmentId: String(environmentId),
2026-10-25T02:26:58.7919584Z 615 β threadId: String(threadId),
2026-10-25T02:26:58.7919637Z 616 β });
2026-10-25T02:26:58.7919689Z 617 β };
2026-10-25T02:26:58.7919765Z 618 β const androidHeaderSubtitle = [
2026-10-25T02:26:58.7919837Z 619 β selectedSection?.title,
2026-10-25T02:26:58.7919917Z 620 β headerDiffSummary.additions,
2026-10-25T02:26:58.7919994Z 621 β headerDiffSummary.deletions,
2026-10-25T02:26:58.7920046Z 622 β ]
2026-10-25T02:26:58.7920150Z 623 β .filter((part): part is string => Boolean(part))
2026-10-25T02:26:58.7920212Z 624 β .join(" Β· ");
2026-10-25T02:26:58.7920263Z 625 β
2026-10-25T02:26:58.7920341Z 626 β const showChangedFilesPane =
2026-10-25T02:26:58.7920479Z 627 β !showConnectionNotice &&
2026-10-25T02:26:58.7920607Z 628 β selectedSection !== null &&
2026-10-25T02:26:58.7920713Z 629 β parsedDiff.kind === "files" &&
2026-10-25T02:26:58.7920792Z 630 β NativeReviewDiffView !== null;
2026-10-25T02:26:58.7920960Z 631 β useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
2026-10-25T02:26:58.7921130Z 632 β const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
2026-10-25T02:26:58.7921183Z 633 β
2026-10-25T02:26:58.7921254Z 634 β const listHeader = (() => {
2026-10-25T02:26:58.7921336Z 635 β const children: ReactElement[] = [];
2026-10-25T02:26:58.7921387Z 636 β
2026-10-25T02:26:58.7921449Z 637 β if (error) {
2026-10-25T02:26:58.7921514Z 638 β children.push(
2026-10-25T02:26:58.7921574Z 639 β <View
2026-10-25T02:26:58.7921644Z 640 β key="review-error"
2026-10-25T02:26:58.7921713Z 641 β className={cn(
2026-10-25T02:26:58.7921795Z 642 β "bg-card px-4 py-3",
2026-10-25T02:26:58.7921945Z 643 β Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
2026-10-25T02:26:58.7922004Z 644 β )}
2026-10-25T02:26:58.7922060Z 645 β >
2026-10-25T02:26:58.7922220Z 646 β <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
2026-10-25T02:26:58.7922373Z 647 β <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
2026-10-25T02:26:58.7922433Z 648 β </View>,
2026-10-25T02:26:58.7922489Z 649 β );
2026-10-25T02:26:58.7922542Z 650 β }
2026-10-25T02:26:58.7922594Z 651 β
2026-10-25T02:26:58.7922665Z 652 β if (parsedDiffNotice) {
2026-10-25T02:26:58.7922826Z 653 β children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
2026-10-25T02:26:58.7922879Z 654 β }
2026-10-25T02:26:58.7922929Z 655 β
2026-10-25T02:26:58.7923004Z 656 β if (children.length === 0) {
2026-10-25T02:26:58.7923068Z 657 β return null;
2026-10-25T02:26:58.7923119Z 658 β }
2026-10-25T02:26:58.7923170Z 659 β
2026-10-25T02:26:58.7923239Z 660 β return <>{children}</>;
2026-10-25T02:26:58.7923292Z 661 β })();
2026-10-25T02:26:58.7923360Z 662 β const headerSubtitle = [
2026-10-25T02:26:58.7923438Z 663 β headerDiffSummary.additions,
2026-10-25T02:26:58.7923515Z 664 β headerDiffSummary.deletions,
2026-10-25T02:26:58.7923596Z 665 β pendingReviewCommentCount > 0
2026-10-25T02:26:58.7923764Z 666 β ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
2026-10-25T02:26:58.7923824Z 667 β : null,
2026-10-25T02:26:58.7923875Z 668 β ]
2026-10-25T02:26:58.7923943Z 669 β .filter(Boolean)
2026-10-25T02:26:58.7924009Z 670 β .join(" Β· ");
2026-10-25T02:26:58.7924142Z 671 β const headerTitleText = selectedSection?.title ?? "Review changes";
2026-10-25T02:26:58.7924193Z 672 β
2026-10-25T02:26:58.7924250Z 673 β return (
2026-10-25T02:26:58.7924303Z 674 β <>
2026-10-25T02:26:58.7924367Z 675 β <ReviewHeader
2026-10-25T02:26:58.7924449Z 676 β environmentId={environmentId}
2026-10-25T02:26:58.7924517Z 677 β threadId={threadId}
2026-10-25T02:26:58.7924590Z 678 β title={headerTitleText}
2026-10-25T02:26:58.7924664Z 679 β subtitle={headerSubtitle}
2026-10-25T02:26:58.7924762Z 680 β androidSubtitle={androidHeaderSubtitle}
2026-10-25T02:26:58.7924833Z 681 β iconColor={headerIcon}
2026-10-25T02:26:58.7924926Z 682 β selectedThreadCwd={selectedThreadCwd}
2026-10-25T02:26:58.7925072Z 683 β sectionMenu={sectionMenu}
2026-10-25T02:26:58.7925227Z 684 β selectedSection={selectedSection}
2026-10-25T02:26:58.7925339Z 685 β showSectionToolbar={showSectionToolbar}
2026-10-25T02:26:58.7925450Z 686 β showChangedFilesToggle={showChangedFilesToggle}
2026-10-25T02:26:58.7925534Z 687 β onRefresh={handlePullToRefresh}
2026-10-25T02:26:58.7925617Z 688 β onSelectSection={selectSection}
2026-10-25T02:26:58.7925709Z 689 β onReturnToThread={handleReturnToThread}
2026-10-25T02:26:58.7925764Z 690 β />
2026-10-25T02:26:58.7925815Z 691 β
2026-10-25T02:26:58.7925915Z 692 β <ScreenContent>
2026-10-25T02:26:58.7926036Z 693 β <View className="flex-1 bg-sheet android:bg-sheet-solid">
2026-10-25T02:26:58.7926115Z 694 β {showConnectionNotice ? (
2026-10-25T02:26:58.7926260Z 695 β <View className="flex-1" style={{ paddingTop: topContentInset }}>
2026-10-25T02:26:58.7926350Z 696 β <EnvironmentConnectionNotice
2026-10-25T02:26:58.7926521Z 697 β environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
2026-10-25T02:26:58.7926591Z 698 β connection={
2026-10-25T02:26:58.7926695Z 699 β environment.presentation?.connection ?? {
2026-10-25T02:26:58.7926775Z 700 β phase: "available",
2026-10-25T02:26:58.7926846Z 701 β error: null,
2026-10-25T02:26:58.7926920Z 702 β traceId: null,
2026-10-25T02:26:58.7926983Z 703 β }
2026-10-25T02:26:58.7927041Z 704 β }
2026-10-25T02:26:58.7927120Z 705 β resourceName="review"
2026-10-25T02:26:58.7927216Z 706 β onRetry={handleRetryEnvironment}
2026-10-25T02:26:58.7927280Z 707 β />
2026-10-25T02:26:58.7927342Z 708 β </View>
2026-10-25T02:26:58.7927496Z 709 β ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
2026-10-25T02:26:58.7927557Z 710 β <View
2026-10-25T02:26:58.7927630Z 711 β className="flex-1"
2026-10-25T02:26:58.7927692Z 712 β style={{
2026-10-25T02:26:58.7927808Z 713 β backgroundColor: nativeBridge.theme.background,
2026-10-25T02:26:58.7927867Z 714 β }}
2026-10-25T02:26:58.7927926Z 715 β >
2026-10-25T02:26:58.7927985Z 716 β <View
2026-10-25T02:26:58.7928070Z 717 β className="min-w-0 flex-1"
2026-10-25T02:26:58.7928207Z 718 β style={listHeader ? { paddingTop: topContentInset } : undefined}
2026-10-25T02:26:58.7928265Z 719 β >
2026-10-25T02:26:58.7928393Z 720 β {listHeader}
2026-10-25T02:26:58.7928732Z 721 β <View className="min-w-0 flex-1" collapsable={false}>
2026-10-25T02:26:58.7928838Z 722 β <NativeReviewDiffView
2026-10-25T02:26:58.7928944Z Β· βββββββββββ¬βββββββββ
2026-10-25T02:26:58.7929109Z Β· β°ββ This component is created during render
2026-10-25T02:26:58.7929189Z 723 β collapsable={false}
2026-10-25T02:26:58.7929241Z β°ββββ
2026-10-25T02:26:58.7929486Z help: Components created during render will reset their state each time they are created. Declare components outside of render
2026-10-25T02:26:58.7929807Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-25T02:26:58.7929812Z
2026-10-25T02:26:58.7930092Z β eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-25T02:26:58.7930224Z ββ[apps/server/src/provider/AntigravityAuth.ts:303:20]
2026-10-25T02:26:58.7930278Z 302 β },
2026-10-25T02:26:58.7930356Z 303 β (effect, flow, stopSessions) =>
2026-10-25T02:26:58.7930447Z Β· βββββββ¬βββββ
2026-10-25T02:26:58.7930591Z Β· β°ββ 'stopSessions' is declared here
2026-10-25T02:26:58.7930654Z 304 β effect.pipe(
2026-10-25T02:26:58.7930703Z β°ββββ
2026-10-25T02:26:58.7930805Z help: Consider removing this parameter.
2026-10-25T02:26:58.7930807Z
2026-10-25T02:26:58.7931041Z β unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
2026-10-25T02:26:58.7931178Z ββ[apps/web/src/components/chat/useComposerSend.ts:985:13]
2026-10-25T02:26:58.7931296Z 984 β const changedBeforeDecline = draftChangedSinceSend();
2026-10-25T02:26:58.7931530Z 985 β βββΆ const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
2026-10-25T02:26:58.7931649Z 986 β β (approval) => approval.requestId,
2026-10-25T02:26:58.7931781Z 987 β β°ββΆ );
2026-10-25T02:26:58.7931919Z 988 β const approvalResponding = approvalsToDecline.some((approval) =>
2026-10-25T02:26:58.7931968Z β°ββββ
2026-10-25T02:26:58.7932043Z help: Switch to `Set`
2026-10-25T02:26:58.7932046Z
2026-10-25T02:26:58.7932501Z β 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-25T02:26:58.7932639Z ββ[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-25T02:26:58.7932769Z 180 β it("sends a message without the records the wire cannot carry", () => {
2026-10-25T02:26:58.7932945Z 181 β const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-25T02:26:58.7933050Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.7933112Z 182 β version: 1,
2026-10-25T02:26:58.7933160Z β°ββββ
2026-10-25T02:26:58.7933163Z
2026-10-25T02:26:58.7933462Z Γ t3code(no-low-value-comments): Cut this to 4 lines or fewer: keep the constraint, drop the background.
2026-10-25T02:26:58.7933660Z ββ[packages/contracts/src/orchestrationV2.ts:746:1]
2026-10-25T02:26:58.7933714Z 745 β
2026-10-25T02:26:58.7933837Z 746 β βββΆ /**
2026-10-25T02:26:58.7934052Z 747 β β * Wire-only. Set for clients that opted in with `acceptDedupedBodies` or `dedupeBodies=1` when the
2026-10-25T02:26:58.7934252Z 748 β β * marked field was blanked because the client already holds the same value: in the record it
2026-10-25T02:26:58.7934405Z 749 β β * received earlier on the same response or stream. Restore with
2026-10-25T02:26:58.7934616Z 750 β β * `@t3tools/shared/orchestrationV2DedupedBodies` before use; never store or forward a marked
2026-10-25T02:26:58.7934822Z 751 β β * value. Clients that opted in restore only these fields, so blanking another field needs a new
2026-10-25T02:26:58.7934904Z 752 β β * opt-in.
2026-10-25T02:26:58.7935026Z 753 β β°ββΆ */
2026-10-25T02:26:58.7935159Z 754 β const DedupedBodyMarker = Schema.optionalKey(Schema.Literal(true));
2026-10-25T02:26:58.7935208Z β°ββββ
2026-10-25T02:26:58.7935211Z
2026-10-25T02:26:58.7935410Z β unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-25T02:26:58.7935513Z ββ[packages/contracts/src/rpc.ts:302:8]
2026-10-25T02:26:58.7935579Z 301 β } from "./device.ts";
2026-10-25T02:26:58.7935668Z 302 β import {} from "./previewAutomation.ts";
2026-10-25T02:26:58.7935736Z Β· ββ
2026-10-25T02:26:58.7935794Z 303 β import {
2026-10-25T02:26:58.7935885Z β°ββββ
2026-10-25T02:26:58.7935975Z help: Remove empty braces
2026-10-25T02:26:58.7935977Z
2026-10-25T02:26:58.7936243Z β eslint(no-unused-vars): Variable 'navigation' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7936406Z ββ[apps/mobile/src/features/workspace/WorkspaceSectionToolbar.tsx:23:9]
2026-10-25T02:26:58.7936499Z 22 β const selectTab = useSelectWorkspaceTab();
2026-10-25T02:26:58.7936578Z 23 β const navigation = useNavigation();
2026-10-25T02:26:58.7936653Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7936783Z Β· β°ββ 'navigation' is declared here
2026-10-25T02:26:58.7936870Z 24 β const selected = selectedNavigationTab(
2026-10-25T02:26:58.7936918Z β°ββββ
2026-10-25T02:26:58.7937028Z help: Consider removing this declaration.
2026-10-25T02:26:58.7937033Z
2026-10-25T02:26:58.7937285Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7937422Z ββ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-25T02:26:58.7937473Z 150 β
2026-10-25T02:26:58.7937537Z 151 β useEffect(() => {
2026-10-25T02:26:58.7937607Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7937732Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7937813Z 152 β if (!controlledSelectedPath) {
2026-10-25T02:26:58.7937871Z 153 β return;
2026-10-25T02:26:58.7937924Z 154 β }
2026-10-25T02:26:58.7938003Z 155 β setExpandedPaths((current) => {
2026-10-25T02:26:58.7938080Z Β· βββββββββ¬βββββββ
2026-10-25T02:26:58.7938314Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7938513Z 156 β const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-25T02:26:58.7938562Z β°ββββ
2026-10-25T02:26:58.7939151Z 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-25T02:26:58.7939469Z 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-25T02:26:58.7939472Z
2026-10-25T02:26:58.7939673Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7939818Z ββ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-25T02:26:58.7939912Z 256 β return () => cancelAnimationFrame(frame);
2026-10-25T02:26:58.7939989Z 257 β }, [props.path, targetIndex]);
2026-10-25T02:26:58.7940062Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7940204Z Β· β°ββ Unnecessary dependency `props.path`
2026-10-25T02:26:58.7940257Z 258 β
2026-10-25T02:26:58.7940305Z β°ββββ
2026-10-25T02:26:58.7940591Z 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-25T02:26:58.7940908Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7940913Z
2026-10-25T02:26:58.7941101Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7941246Z ββ[apps/mobile/src/features/files/SourceFileSurface.tsx:289:23]
2026-10-25T02:26:58.7941316Z 288 β <SourceText
2026-10-25T02:26:58.7941414Z 289 β key={`${index}:${tokenIndex}`}
2026-10-25T02:26:58.7941530Z Β· ββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7941599Z 290 β style={{
2026-10-25T02:26:58.7941647Z β°ββββ
2026-10-25T02:26:58.7941791Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7941794Z
2026-10-25T02:26:58.7941988Z β react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-25T02:26:58.7942133Z ββ[apps/mobile/src/features/files/SourceFileSurface.tsx:305:27]
2026-10-25T02:26:58.7942195Z 304 β return (
2026-10-25T02:26:58.7942278Z 305 β <SourceText key={index}>
2026-10-25T02:26:58.7942380Z Β· βββββββββββ
2026-10-25T02:26:58.7942445Z 306 β {body}
2026-10-25T02:26:58.7942496Z β°ββββ
2026-10-25T02:26:58.7942642Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-25T02:26:58.7942644Z
2026-10-25T02:26:58.7942809Z β eslint(no-empty-pattern): Empty object binding pattern
2026-10-25T02:26:58.7942952Z ββ[apps/server/src/provider/Drivers/CodexDriver.test.ts:460:14]
2026-10-25T02:26:58.7943003Z 459 β
2026-10-25T02:26:58.7943177Z 460 β for (const {} of ["direct", "wrapper"] as const) {
2026-10-25T02:26:58.7943315Z Β· ββ
2026-10-25T02:26:58.7943387Z 461 β }
2026-10-25T02:26:58.7943435Z β°ββββ
2026-10-25T02:26:58.7943662Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-25T02:26:58.7943665Z
2026-10-25T02:26:58.7943863Z β react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-25T02:26:58.7944020Z ββ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:156:7]
2026-10-25T02:26:58.7944073Z 155 β }
2026-10-25T02:26:58.7944142Z 156 β }, [wrappedRender]);
2026-10-25T02:26:58.7944221Z Β· βββββββ¬ββββββ
2026-10-25T02:26:58.7944368Z Β· β°ββ Unnecessary dependency `wrappedRender`
2026-10-25T02:26:58.7944424Z 157 β
2026-10-25T02:26:58.7944477Z β°ββββ
2026-10-25T02:26:58.7944764Z 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-25T02:26:58.7945073Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7945075Z
2026-10-25T02:26:58.7945611Z β react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-25T02:26:58.7945773Z ββ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:825:42]
2026-10-25T02:26:58.7945827Z 824 β >
2026-10-25T02:26:58.7945992Z 825 β <AdaptiveWorkspaceContext.Provider value={contextValue}>
2026-10-25T02:26:58.7946115Z Β· ββββββββββββββββββββ
2026-10-25T02:26:58.7946216Z 826 β <WindowHingeContext value={windowHinge}>
2026-10-25T02:26:58.7946266Z β°ββββ
2026-10-25T02:26:58.7946485Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-25T02:26:58.7946622Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-25T02:26:58.7946625Z
2026-10-25T02:26:58.7946801Z β react(memo-dependencies): Found extra memoization dependencies
2026-10-25T02:26:58.7946983Z ββ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:121:34]
2026-10-25T02:26:58.7947050Z 120 β return [...commands];
2026-10-25T02:26:58.7947185Z 121 β }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-25T02:26:58.7947297Z Β· ββββββββββ¬βββββββββ
2026-10-25T02:26:58.7947477Z Β· β°ββ Unnecessary dependency `registrationVersion`
2026-10-25T02:26:58.7947528Z 122 β
2026-10-25T02:26:58.7947578Z β°ββββ
2026-10-25T02:26:58.7947889Z help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-25T02:26:58.7948198Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7948200Z
2026-10-25T02:26:58.7948355Z β react(immutability): This value cannot be modified
2026-10-25T02:26:58.7948595Z ββ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:39:5]
2026-10-25T02:26:58.7948689Z 32 β
2026-10-25T02:26:58.7948873Z 33 β const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
2026-10-25T02:26:58.7948961Z Β· βββββββββ¬ββββββββ
2026-10-25T02:26:58.7949104Z Β· β°ββ `inspectorProgress` originates here
2026-10-25T02:26:58.7949198Z 34 β const { renderedInspectorWidth } = props;
2026-10-25T02:26:58.7949326Z 35 β const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-25T02:26:58.7949377Z 36 β
2026-10-25T02:26:58.7949458Z 37 β const onClosed = props.onClosed;
2026-10-25T02:26:58.7949522Z 38 β useEffect(() => {
2026-10-25T02:26:58.7949609Z 39 β inspectorProgress.value = withTiming(
2026-10-25T02:26:58.7949689Z Β· βββββββββ¬ββββββββ
2026-10-25T02:26:58.7949840Z Β· β°ββ `inspectorProgress` cannot be modified
2026-10-25T02:26:58.7949917Z 40 β inspectorVisible ? 1 : 0,
2026-10-25T02:26:58.7949968Z β°ββββ
2026-10-25T02:26:58.7950230Z 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-25T02:26:58.7950532Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-25T02:26:58.7950535Z
2026-10-25T02:26:58.7950686Z β react(immutability): This value cannot be modified
2026-10-25T02:26:58.7950840Z ββ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:64:7]
2026-10-25T02:26:58.7950931Z 34 β const { renderedInspectorWidth } = props;
2026-10-25T02:26:58.7951069Z 35 β const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-25T02:26:58.7951160Z Β· βββββββββββ¬βββββββββ
2026-10-25T02:26:58.7951309Z Β· β°ββ `renderedContentWidth` originates here
2026-10-25T02:26:58.7951360Z 36 β
2026-10-25T02:26:58.7951440Z 37 β const onClosed = props.onClosed;
2026-10-25T02:26:58.7951503Z 38 β useEffect(() => {
2026-10-25T02:26:58.7951589Z 39 β inspectorProgress.value = withTiming(
2026-10-25T02:26:58.7951665Z 40 β inspectorVisible ? 1 : 0,
2026-10-25T02:26:58.7951735Z 41 β WORKSPACE_PANE_TIMING,
2026-10-25T02:26:58.7951800Z 42 β (finished) => {
2026-10-25T02:26:58.7951936Z 43 β if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-25T02:26:58.7952008Z 44 β runOnJS(onClosed)();
2026-10-25T02:26:58.7952125Z 45 β }
2026-10-25T02:26:58.7952223Z 46 β },
2026-10-25T02:26:58.7952306Z 47 β );
2026-10-25T02:26:58.7952444Z 48 β const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-25T02:26:58.7952521Z 49 β renderedInspectorWidth.set(
2026-10-25T02:26:58.7952661Z 50 β resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-25T02:26:58.7952715Z 51 β );
2026-10-25T02:26:58.7952768Z 52 β }, [
2026-10-25T02:26:58.7952836Z 53 β inspectorProgress,
2026-10-25T02:26:58.7952898Z 54 β inspectorVisible,
2026-10-25T02:26:58.7952960Z 55 β inspectorWidth,
2026-10-25T02:26:58.7953020Z 56 β onClosed,
2026-10-25T02:26:58.7953090Z 57 β renderedInspectorWidth,
2026-10-25T02:26:58.7953148Z 58 β resizing,
2026-10-25T02:26:58.7953201Z 59 β ]);
2026-10-25T02:26:58.7953252Z 60 β
2026-10-25T02:26:58.7953320Z 61 β useEffect(() => {
2026-10-25T02:26:58.7953412Z 62 β const targetWidth = inspectorWidth ?? 0;
2026-10-25T02:26:58.7953497Z 63 β if (!inspectorVisible || resizing) {
2026-10-25T02:26:58.7953592Z 64 β renderedContentWidth.value = targetWidth;
2026-10-25T02:26:58.7953677Z Β· βββββββββββ¬βββββββββ
2026-10-25T02:26:58.7953831Z Β· β°ββ `renderedContentWidth` cannot be modified
2026-10-25T02:26:58.7953895Z 65 β return;
2026-10-25T02:26:58.7953946Z β°ββββ
2026-10-25T02:26:58.7954206Z 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-25T02:26:58.7954513Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-25T02:26:58.7954518Z
2026-10-25T02:26:58.7954743Z β eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-25T02:26:58.7954867Z ββ[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-25T02:26:58.7955046Z 34 β const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-25T02:26:58.7955137Z 35 β instanceId === configured ? true : false,
2026-10-25T02:26:58.7955253Z Β· ββββββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7955307Z 36 β );
2026-10-25T02:26:58.7955357Z β°ββββ
2026-10-25T02:26:58.7955450Z help: Remove this ternary operator
2026-10-25T02:26:58.7955453Z
2026-10-25T02:26:58.7955676Z β unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-25T02:26:58.7955807Z ββ[scripts/lib/cli-external-packages.test.ts:104:11]
2026-10-25T02:26:58.7955908Z 103 β const declared = {
2026-10-25T02:26:58.7956006Z 104 β ...(manifest.dependencies ?? {}),
2026-10-25T02:26:58.7956115Z Β· ββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7956218Z 105 β ...(manifest.optionalDependencies ?? {}),
2026-10-25T02:26:58.7956272Z β°ββββ
2026-10-25T02:26:58.7956532Z help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-25T02:26:58.7956536Z
2026-10-25T02:26:58.7956752Z β unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-25T02:26:58.7956878Z ββ[scripts/lib/cli-external-packages.test.ts:105:11]
2026-10-25T02:26:58.7957027Z 104 β ...(manifest.dependencies ?? {}),
2026-10-25T02:26:58.7957189Z 105 β ...(manifest.optionalDependencies ?? {}),
2026-10-25T02:26:58.7957322Z Β· ββββββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7957418Z 106 β ...(manifest.peerDependencies ?? {}),
2026-10-25T02:26:58.7957468Z β°ββββ
2026-10-25T02:26:58.7957726Z help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-25T02:26:58.7957729Z
2026-10-25T02:26:58.7957942Z β unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-25T02:26:58.7958067Z ββ[scripts/lib/cli-external-packages.test.ts:106:11]
2026-10-25T02:26:58.7958167Z 105 β ...(manifest.optionalDependencies ?? {}),
2026-10-25T02:26:58.7958267Z 106 β ...(manifest.peerDependencies ?? {}),
2026-10-25T02:26:58.7958380Z Β· ββββββββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.7958439Z 107 β };
2026-10-25T02:26:58.7958490Z β°ββββ
2026-10-25T02:26:58.7958747Z help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
2026-10-25T02:26:58.7958750Z
2026-10-25T02:26:58.7959209Z β 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-25T02:26:58.7959387Z ββ[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:222:5]
2026-10-25T02:26:58.7959463Z 221 β let idlePasses = 0;
2026-10-25T02:26:58.7959608Z 222 β βββΆ for (;;) {
2026-10-25T02:26:58.7959742Z 223 β β yield* Effect.promise(() => Promise.resolve());
2026-10-25T02:26:58.7959882Z 224 β β const pending = backgroundRuntime.pending.shift();
2026-10-25T02:26:58.7959977Z 225 β β if (!pending) {
2026-10-25T02:26:58.7960068Z 226 β β idlePasses++;
2026-10-25T02:26:58.7960172Z 227 β β if (idlePasses >= 3) {
2026-10-25T02:26:58.7960254Z 228 β β return;
2026-10-25T02:26:58.7960332Z 229 β β }
2026-10-25T02:26:58.7960415Z 230 β β continue;
2026-10-25T02:26:58.7960490Z 231 β β }
2026-10-25T02:26:58.7960586Z 232 β β idlePasses = 0;
2026-10-25T02:26:58.7960702Z 233 β β const exit = yield* Effect.exit(
2026-10-25T02:26:58.7960909Z 234 β β pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-25T02:26:58.7960986Z 235 β β );
2026-10-25T02:26:58.7961090Z 236 β β yield* Effect.sync(() => {
2026-10-25T02:26:58.7961192Z 237 β β pending.resolve(exit);
2026-10-25T02:26:58.7961269Z 238 β β });
2026-10-25T02:26:58.7961400Z 239 β β°ββΆ }
2026-10-25T02:26:58.7961456Z 240 β },
2026-10-25T02:26:58.7961507Z β°ββββ
2026-10-25T02:26:58.7961510Z
2026-10-25T02:26:58.7961743Z β eslint(no-control-regex): Unexpected control character
2026-10-25T02:26:58.7962014Z ββ[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-25T02:26:58.7962151Z 219 β <Text selectable className="font-mono text-sm text-foreground">
2026-10-25T02:26:58.7962287Z 220 β {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-25T02:26:58.7962395Z Β· βββ¬β
2026-10-25T02:26:58.7962559Z Β· β°ββ 'U+001B' is a control character.
2026-10-25T02:26:58.7962622Z 221 β </Text>
2026-10-25T02:26:58.7962673Z β°ββββ
2026-10-25T02:26:58.7962903Z help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-25T02:26:58.7962911Z
2026-10-25T02:26:58.7963337Z β t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
2026-10-25T02:26:58.7963483Z ββ[apps/server/src/provider/acp/AntigravityProtocol.ts:260:20]
2026-10-25T02:26:58.7963563Z 259 β ...(update._meta !== undefined
2026-10-25T02:26:58.7963726Z 260 β ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-25T02:26:58.7963813Z Β· βββββββββ
2026-10-25T02:26:58.7963876Z 261 β : {}),
2026-10-25T02:26:58.7963926Z β°ββββ
2026-10-25T02:26:58.7963928Z
2026-10-25T02:26:58.7964262Z β 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-25T02:26:58.7964382Z ββ[packages/effect-acp/src/schema.test.ts:18:12]
2026-10-25T02:26:58.7964541Z 17 β const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
2026-10-25T02:26:58.7964660Z 18 β expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
2026-10-25T02:26:58.7964736Z Β· βββββββββ
2026-10-25T02:26:58.7964794Z 19 β expect(
2026-10-25T02:26:58.7964845Z β°ββββ
2026-10-25T02:26:58.7964848Z
2026-10-25T02:26:58.7965172Z β 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-25T02:26:58.7965288Z ββ[packages/effect-acp/src/schema.test.ts:20:7]
2026-10-25T02:26:58.7965346Z 19 β expect(
2026-10-25T02:26:58.7965515Z 20 β Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
2026-10-25T02:26:58.7965589Z Β· βββββββββ
2026-10-25T02:26:58.7965652Z 21 β ).toBe(true);
2026-10-25T02:26:58.7965704Z β°ββββ
2026-10-25T02:26:58.7965707Z
2026-10-25T02:26:58.7966010Z β eslint(no-unused-vars): Variable 'claudeCaps' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7966118Z ββ[packages/shared/src/model.test.ts:36:7]
2026-10-25T02:26:58.7966169Z 35 β
2026-10-25T02:26:58.7966297Z 36 β const claudeCaps: ModelCapabilities = createModelCapabilities({
2026-10-25T02:26:58.7966369Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7966501Z Β· β°ββ 'claudeCaps' is declared here
2026-10-25T02:26:58.7966631Z 37 β optionDescriptors: [
2026-10-25T02:26:58.7966711Z β°ββββ
2026-10-25T02:26:58.7966861Z help: Consider removing this declaration.
2026-10-25T02:26:58.7966864Z
2026-10-25T02:26:58.7967042Z β eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-25T02:26:58.7967176Z ββ[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-25T02:26:58.7967261Z 14 β import * as Layer from "effect/Layer";
2026-10-25T02:26:58.7967352Z 15 β import type * as Scope from "effect/Scope";
2026-10-25T02:26:58.7967429Z Β· βββ¬ββ
2026-10-25T02:26:58.7967560Z Β· β°ββ 'Scope' is imported here
2026-10-25T02:26:58.7967645Z 16 β import * as Stream from "effect/Stream";
2026-10-25T02:26:58.7967695Z β°ββββ
2026-10-25T02:26:58.7967796Z help: Consider removing this import.
2026-10-25T02:26:58.7967802Z
2026-10-25T02:26:58.7968052Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7968237Z ββ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-25T02:26:58.7968289Z 117 β
2026-10-25T02:26:58.7968355Z 118 β useEffect(() => {
2026-10-25T02:26:58.7968424Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7968551Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7968631Z 119 β void refreshNotifications();
2026-10-25T02:26:58.7968720Z Β· βββββββββββ¬βββββββββ
2026-10-25T02:26:58.7968892Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7969037Z 120 β const subscription = AppState.addEventListener("change", (state) => {
2026-10-25T02:26:58.7969091Z β°ββββ
2026-10-25T02:26:58.7969679Z 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-25T02:26:58.7969995Z 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-25T02:26:58.7969998Z
2026-10-25T02:26:58.7970247Z β react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-25T02:26:58.7970432Z ββ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-25T02:26:58.7970486Z 125 β
2026-10-25T02:26:58.7970550Z 126 β useEffect(() => {
2026-10-25T02:26:58.7970619Z Β· βββββ¬ββββ
2026-10-25T02:26:58.7970745Z Β· β°ββ This is the containing effect
2026-10-25T02:26:58.7970811Z 127 β if (!isLoaded) {
2026-10-25T02:26:58.7970901Z 128 β setLiveActivityStatus("checking");
2026-10-25T02:26:58.7970989Z Β· βββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7971157Z Β· β°ββ Avoid calling setState() directly within an effect
2026-10-25T02:26:58.7971217Z 129 β return;
2026-10-25T02:26:58.7971270Z β°ββββ
2026-10-25T02:26:58.7971922Z 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-25T02:26:58.7972321Z 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-25T02:26:58.7972324Z
2026-10-25T02:26:58.7972530Z β eslint(no-unused-vars): Type 'ScheduledTaskDraft' is imported but never used.
2026-10-25T02:26:58.7972685Z ββ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:10:8]
2026-10-25T02:26:58.7972766Z 9 β hasScheduledTaskDraftChanges,
2026-10-25T02:26:58.7972836Z 10 β type ScheduledTaskDraft,
2026-10-25T02:26:58.7972922Z Β· ββββββββββ¬ββββββββ
2026-10-25T02:26:58.7973075Z Β· β°ββ 'ScheduledTaskDraft' is imported here
2026-10-25T02:26:58.7973153Z 11 β } from "./scheduledTaskDraft";
2026-10-25T02:26:58.7973202Z β°ββββ
2026-10-25T02:26:58.7973299Z help: Consider removing this import.
2026-10-25T02:26:58.7973302Z
2026-10-25T02:26:58.7973478Z β react(memo-dependencies): Found extra memoization dependencies
2026-10-25T02:26:58.7973635Z ββ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:81:85]
2026-10-25T02:26:58.7973734Z 80 β const startEditor = startScheduledTaskEditor;
2026-10-25T02:26:58.7973911Z 81 β const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-25T02:26:58.7974053Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7974258Z Β· β°ββ Unnecessary dependency `startEditor`
2026-10-25T02:26:58.7974336Z 82 β const readEditor = useCallback(
2026-10-25T02:26:58.7974387Z β°ββββ
2026-10-25T02:26:58.7974696Z help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-25T02:26:58.7975003Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7975006Z
2026-10-25T02:26:58.7975182Z β react(memo-dependencies): Found extra memoization dependencies
2026-10-25T02:26:58.7975335Z ββ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:102:7]
2026-10-25T02:26:58.7975458Z 101 β setEditor,
2026-10-25T02:26:58.7975570Z 102 β startEditor,
2026-10-25T02:26:58.7975672Z Β· ββββββ¬βββββ
2026-10-25T02:26:58.7975811Z Β· β°ββ Unnecessary dependency `startEditor`
2026-10-25T02:26:58.7975909Z 103 β hasChanges,
2026-10-25T02:26:58.7975969Z β°ββββ
2026-10-25T02:26:58.7976271Z help: Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-25T02:26:58.7976574Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7976579Z
2026-10-25T02:26:58.7977046Z β 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-25T02:26:58.7977180Z ββ[apps/server/src/project/ProjectService.test.ts:94:3]
2026-10-25T02:26:58.7977235Z 93 β ) {
2026-10-25T02:26:58.7977430Z 94 β βββΆ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-25T02:26:58.7977599Z 95 β β const project = Option.getOrThrow(yield* service.getById(projectId));
2026-10-25T02:26:58.7977718Z 96 β β if (predicate(project)) return project;
2026-10-25T02:26:58.7977819Z 97 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7977941Z 98 β β°ββΆ }
2026-10-25T02:26:58.7978092Z 99 β return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
2026-10-25T02:26:58.7978144Z β°ββββ
2026-10-25T02:26:58.7978147Z
2026-10-25T02:26:58.7978600Z β 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-25T02:26:58.7978755Z ββ[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
2026-10-25T02:26:58.7978808Z 27 β ) {
2026-10-25T02:26:58.7979001Z 28 β βββΆ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-25T02:26:58.7979142Z 29 β β const available = yield* service.peek(workspaceRoot);
2026-10-25T02:26:58.7979270Z 30 β β if (predicate(available)) return available;
2026-10-25T02:26:58.7979370Z 31 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7979490Z 32 β β°ββΆ }
2026-10-25T02:26:58.7979664Z 33 β return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
2026-10-25T02:26:58.7979713Z β°ββββ
2026-10-25T02:26:58.7979715Z
2026-10-25T02:26:58.7979898Z β react(capitalized-calls): Capitalized function called without JSX
2026-10-25T02:26:58.7980011Z ββ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-25T02:26:58.7980069Z 7 β () =>
2026-10-25T02:26:58.7980133Z 8 β Gesture.Hover()
2026-10-25T02:26:58.7980209Z Β· βββ¬ββ
2026-10-25T02:26:58.7980410Z Β· β°ββ `Hover` may be a component
2026-10-25T02:26:58.7980535Z 9 β .manualActivation(true)
2026-10-25T02:26:58.7980608Z β°ββββ
2026-10-25T02:26:58.7980885Z 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-25T02:26:58.7981326Z 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-25T02:26:58.7981328Z
2026-10-25T02:26:58.7981598Z β eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.7981743Z ββ[apps/web/src/components/preview/PreviewPanelShell.tsx:57:9]
2026-10-25T02:26:58.7981797Z 56 β ) {
2026-10-25T02:26:58.7981965Z 57 β const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-25T02:26:58.7982047Z Β· βββββββ¬ββββββ
2026-10-25T02:26:58.7982184Z Β· β°ββ 'useDragRegion' is declared here
2026-10-25T02:26:58.7982273Z 58 β const isInline = props.mode === "inline";
2026-10-25T02:26:58.7982322Z β°ββββ
2026-10-25T02:26:58.7982426Z help: Consider removing this declaration.
2026-10-25T02:26:58.7982429Z
2026-10-25T02:26:58.7982592Z β react(purity): Cannot call impure function during render
2026-10-25T02:26:58.7982737Z ββ[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
2026-10-25T02:26:58.7982847Z 177 β if (snoozeClockState.shell !== activeThreadShell) {
2026-10-25T02:26:58.7983009Z 178 β setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
2026-10-25T02:26:58.7983135Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.7983301Z Β· β°ββ Cannot call impure function
2026-10-25T02:26:58.7983355Z 179 β }
2026-10-25T02:26:58.7983403Z β°ββββ
2026-10-25T02:26:58.7983677Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-25T02:26:58.7983969Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-25T02:26:58.7983971Z
2026-10-25T02:26:58.7984433Z β 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-25T02:26:58.7984562Z ββ[apps/server/src/usage/UsageService.test.ts:2613:7]
2026-10-25T02:26:58.7984657Z 2612 β let orphanedAt: number | undefined;
2026-10-25T02:26:58.7984883Z 2613 β βββΆ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-25T02:26:58.7985003Z 2614 β β const tasks: Array<() => void> = [];
2026-10-25T02:26:58.7985152Z 2615 β β const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-25T02:26:58.7985369Z 2616 β β scheduleTask: (task) => tasks.push(task),
2026-10-25T02:26:58.7985542Z 2617 β β flush: () => {
2026-10-25T02:26:58.7985750Z 2618 β β let task: (() => void) | undefined;
2026-10-25T02:26:58.7985965Z 2619 β β while ((task = tasks.shift()) !== undefined) task();
2026-10-25T02:26:58.7986047Z 2620 β β },
2026-10-25T02:26:58.7986128Z 2621 β β };
2026-10-25T02:26:58.7986200Z 2622 β β
2026-10-25T02:26:58.7986359Z 2623 β β let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-25T02:26:58.7986463Z 2624 β β let requestChecks = 0;
2026-10-25T02:26:58.7986593Z 2625 β β const scheduler: Scheduler.Scheduler = {
2026-10-25T02:26:58.7986701Z 2626 β β executionMode: "async",
2026-10-25T02:26:58.7986826Z 2627 β β makeDispatcher: () => dispatcher,
2026-10-25T02:26:58.7986937Z 2628 β β shouldYield: (fiber) => {
2026-10-25T02:26:58.7987070Z 2629 β β if (fiber !== requestFiber) return false;
2026-10-25T02:26:58.7987176Z 2630 β β requestChecks += 1;
2026-10-25T02:26:58.7987317Z 2631 β β if (requestChecks !== interruptAt) return false;
2026-10-25T02:26:58.7987430Z 2632 β β fiber.interruptUnsafe();
2026-10-25T02:26:58.7987529Z 2633 β β return true;
2026-10-25T02:26:58.7987612Z 2634 β β },
2026-10-25T02:26:58.7987695Z 2635 β β };
2026-10-25T02:26:58.7987763Z 2636 β β
2026-10-25T02:26:58.7987889Z 2637 β β const input: UsageSummaryInput = {
2026-10-25T02:26:58.7987985Z 2638 β β ...WINDOW,
2026-10-25T02:26:58.7988112Z 2639 β β sinceDay: UsageDay.make("2026-09-01"),
2026-10-25T02:26:58.7988299Z 2640 β β untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-25T02:26:58.7988379Z 2641 β β };
2026-10-25T02:26:58.7988491Z 2642 β β const first = yield* service
2026-10-25T02:26:58.7988595Z 2643 β β .readSummary(input)
2026-10-25T02:26:58.7988681Z 2644 β β .pipe(
2026-10-25T02:26:58.7988778Z 2645 β β Effect.exit,
2026-10-25T02:26:58.7988939Z 2646 β β Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-25T02:26:58.7989043Z 2647 β β Effect.forkChild,
2026-10-25T02:26:58.7989121Z 2648 β β );
2026-10-25T02:26:58.7989224Z 2649 β β requestFiber = first;
2026-10-25T02:26:58.7989331Z 2650 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7989434Z 2651 β β dispatcher.flush();
2026-10-25T02:26:58.7989501Z 2652 β β
2026-10-25T02:26:58.7989651Z 2653 β β const second = yield* service.readSummary(input).pipe(
2026-10-25T02:26:58.7989749Z 2654 β β Effect.match({
2026-10-25T02:26:58.7989873Z 2655 β β onFailure: (error) => error.reason,
2026-10-25T02:26:58.7990132Z 2656 β β onSuccess: () => "success" as const,
2026-10-25T02:26:58.7990270Z 2657 β β }),
2026-10-25T02:26:58.7990447Z 2658 β β Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-25T02:26:58.7990549Z 2659 β β Effect.forkChild,
2026-10-25T02:26:58.7990629Z 2660 β β );
2026-10-25T02:26:58.7990731Z 2661 β β yield* Effect.yieldNow;
2026-10-25T02:26:58.7990830Z 2662 β β dispatcher.flush();
2026-10-25T02:26:58.7990954Z 2663 β β const secondExit = second.pollUnsafe();
2026-10-25T02:26:58.7991070Z 2664 β β if (secondExit === undefined) {
2026-10-25T02:26:58.7991182Z 2665 β β second.interruptUnsafe();
2026-10-25T02:26:58.7991300Z 2666 β β orphanedAt = interruptAt;
2026-10-25T02:26:58.7991389Z 2667 β β break;
2026-10-25T02:26:58.7991468Z 2668 β β }
2026-10-25T02:26:58.7991584Z 2669 β β if (Exit.isFailure(secondExit)) {
2026-10-25T02:26:58.7991739Z 2670 β β assert.fail("the matching request fiber was interrupted");
2026-10-25T02:26:58.7991818Z 2671 β β }
2026-10-25T02:26:58.7991967Z 2672 β β assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-25T02:26:58.7992099Z 2673 β β°ββΆ }
2026-10-25T02:26:58.7992153Z 2674 β
2026-10-25T02:26:58.7992207Z β°ββββ
2026-10-25T02:26:58.7992210Z
2026-10-25T02:26:58.7992570Z β 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-25T02:26:58.7992706Z ββ[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
2026-10-25T02:26:58.7992839Z 1785 β const stat = branch.files!.find((file) => file.path === path)!;
2026-10-25T02:26:58.7992983Z 1786 β const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
2026-10-25T02:26:58.7993097Z Β· βββββββββββββββββββ
2026-10-25T02:26:58.7993159Z 1787 β cwd,
2026-10-25T02:26:58.7993212Z β°ββββ
2026-10-25T02:26:58.7993214Z
2026-10-25T02:26:58.7993439Z β eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-25T02:26:58.7993605Z ββ[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1387:10]
2026-10-25T02:26:58.7993661Z 1386 β
2026-10-25T02:26:58.7993746Z 1387 β function assertUserMessagesExclude(
2026-10-25T02:26:58.7993848Z Β· βββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.7994011Z Β· β°ββ 'assertUserMessagesExclude' is declared here
2026-10-25T02:26:58.7994118Z 1388 β projection: OrchestrationV2ThreadProjection,
2026-10-25T02:26:58.7994170Z β°ββββ
2026-10-25T02:26:58.7994274Z help: Consider removing this declaration.
2026-10-25T02:26:58.7994276Z
2026-10-25T02:26:58.7994511Z β unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
2026-10-25T02:26:58.7994634Z ββ[apps/server/src/vcs/GitVcsDriverCore.ts:498:11]
2026-10-25T02:26:58.7994795Z 497 β GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
2026-10-25T02:26:58.7995017Z 498 β (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
2026-10-25T02:26:58.7995103Z Β· βββββββββββββββ
2026-10-25T02:26:58.7995157Z 499 β )
2026-10-25T02:26:58.7995207Z β°ββββ
2026-10-25T02:26:58.7995359Z help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
2026-10-25T02:26:58.7995362Z
2026-10-25T02:26:58.7995564Z β react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-25T02:26:58.7995701Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:229:6]
2026-10-25T02:26:58.7995873Z 225 β nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-25T02:26:58.7996004Z 226 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.7996100Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.7996557Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.7996629Z 227 β mostRecentEventCount,
2026-10-25T02:26:58.7996685Z 228 β );
2026-10-25T02:26:58.7996809Z 229 β }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-25T02:26:58.7996941Z Β· βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
2026-10-25T02:26:58.7997134Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.7997217Z 230 β const assumedValue = props.value;
2026-10-25T02:26:58.7997268Z β°ββββ
2026-10-25T02:26:58.7997439Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-25T02:26:58.7997751Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.7997755Z
2026-10-25T02:26:58.7997964Z β react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-25T02:26:58.7998100Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:235:7]
2026-10-25T02:26:58.7998242Z 234 β nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-25T02:26:58.7998332Z 235 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.7998420Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.7998930Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.7999052Z 236 β controlledEventCount,
2026-10-25T02:26:58.7999147Z 237 β assumedValue,
2026-10-25T02:26:58.7999201Z 238 β );
2026-10-25T02:26:58.7999357Z 239 β }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-25T02:26:58.7999491Z Β· ββββββββββββ¬ββββββββββ
2026-10-25T02:26:58.7999695Z Β· β°ββ Unnecessary dependency `controlledDocumentJson`
2026-10-25T02:26:58.7999785Z 240 β const acceptNativeEvent = useCallback(
2026-10-25T02:26:58.7999836Z β°ββββ
2026-10-25T02:26:58.8000254Z 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-25T02:26:58.8000568Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8000570Z
2026-10-25T02:26:58.8000713Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8000846Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-25T02:26:58.8000969Z 161 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8001080Z 162 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8001198Z Β· ββββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.8001364Z Β· β°ββ Cannot access ref value during render
2026-10-25T02:26:58.8001424Z 163 β });
2026-10-25T02:26:58.8001474Z β°ββββ
2026-10-25T02:26:58.8001935Z 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-25T02:26:58.8002223Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8002227Z
2026-10-25T02:26:58.8002368Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8002508Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:162:29]
2026-10-25T02:26:58.8002630Z 161 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8002740Z 162 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8002853Z Β· ββββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.8003056Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8003112Z 163 β });
2026-10-25T02:26:58.8003163Z β°ββββ
2026-10-25T02:26:58.8003616Z 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-25T02:26:58.8004052Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8004116Z
2026-10-25T02:26:58.8004331Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8004479Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:23]
2026-10-25T02:26:58.8004536Z 163 β });
2026-10-25T02:26:58.8004624Z 164 β confirmedTokensRef.current = tokens;
2026-10-25T02:26:58.8004746Z Β· ββββββββββ¬βββββββββββββ¬βββ
2026-10-25T02:26:58.8004932Z Β· β β°ββ Cannot update ref value during render
2026-10-25T02:26:58.8005045Z Β· β°ββ This value is a ref
2026-10-25T02:26:58.8005115Z 165 β return JSON.stringify(
2026-10-25T02:26:58.8005173Z β°ββββ
2026-10-25T02:26:58.8005632Z 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-25T02:26:58.8005966Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8005968Z
2026-10-25T02:26:58.8006110Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8006242Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:206:5]
2026-10-25T02:26:58.8006312Z 205 β mostRecentEventCount,
2026-10-25T02:26:58.8006399Z 206 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8006505Z Β· ββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.8006691Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8006745Z 207 β );
2026-10-25T02:26:58.8006795Z β°ββββ
2026-10-25T02:26:58.8007253Z 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-25T02:26:58.8007537Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8007539Z
2026-10-25T02:26:58.8007680Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8007816Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:212:5]
2026-10-25T02:26:58.8007888Z 211 β mostRecentEventCount,
2026-10-25T02:26:58.8007974Z 212 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8008078Z Β· ββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.8008261Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8008316Z 213 β );
2026-10-25T02:26:58.8008365Z β°ββββ
2026-10-25T02:26:58.8008817Z 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-25T02:26:58.8009161Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8009190Z
2026-10-25T02:26:58.8009423Z β react(memo-dependencies): Found missing memoization dependencies
2026-10-25T02:26:58.8009557Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:197:6]
2026-10-25T02:26:58.8009676Z 161 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8009787Z 162 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8009895Z Β· ββββββββββ¬ββββββββ
2026-10-25T02:26:58.8010352Z Β· β°ββ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8010412Z 163 β });
2026-10-25T02:26:58.8010502Z 164 β confirmedTokensRef.current = tokens;
2026-10-25T02:26:58.8010572Z 165 β return JSON.stringify(
2026-10-25T02:26:58.8010737Z 166 β composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-25T02:26:58.8010803Z 167 β const record =
2026-10-25T02:26:58.8010882Z 168 β token.type === "context"
2026-10-25T02:26:58.8011046Z 169 β ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-25T02:26:58.8011112Z 170 β : undefined;
2026-10-25T02:26:58.8011217Z 171 β const presentation = contextChipPresentation(
2026-10-25T02:26:58.8011327Z 172 β token.type === "context" ? token.kind : token.type,
2026-10-25T02:26:58.8011391Z 173 β record,
2026-10-25T02:26:58.8011451Z 174 β );
2026-10-25T02:26:58.8011539Z 175 β const icon = contextChipIcon(
2026-10-25T02:26:58.8011608Z 176 β presentation,
2026-10-25T02:26:58.8011749Z 177 β token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-25T02:26:58.8011806Z 178 β );
2026-10-25T02:26:58.8011867Z 179 β return {
2026-10-25T02:26:58.8011936Z 180 β type: token.type,
2026-10-25T02:26:58.8012010Z 181 β source: token.source,
2026-10-25T02:26:58.8012081Z 182 β start: token.start,
2026-10-25T02:26:58.8012145Z 183 β end: token.end,
2026-10-25T02:26:58.8012292Z 184 β accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-25T02:26:58.8012353Z 185 β label:
2026-10-25T02:26:58.8012432Z 186 β token.type === "skill"
2026-10-25T02:26:58.8012536Z 187 β ? (skillLabels.get(token.value) ?? token.value)
2026-10-25T02:26:58.8012623Z 188 β : token.type === "context"
2026-10-25T02:26:58.8012859Z 189 β ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " Β· unavailable"}`
2026-10-25T02:26:58.8012941Z 190 β : basename(token.value),
2026-10-25T02:26:58.8013080Z 191 β detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-25T02:26:58.8013175Z 192 β iconUri: contextChipIconUri(icon),
2026-10-25T02:26:58.8013263Z 193 β tintsIcon: icon.kind === "chip",
2026-10-25T02:26:58.8013321Z 194 β };
2026-10-25T02:26:58.8013376Z 195 β }),
2026-10-25T02:26:58.8013431Z 196 β );
2026-10-25T02:26:58.8013562Z 197 β }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-25T02:26:58.8013781Z Β· ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.8014064Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.8014204Z 198 β // Every render resolves against the snapshot history, so a render whose
2026-10-25T02:26:58.8014256Z β°ββββ
2026-10-25T02:26:58.8014461Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-25T02:26:58.8014769Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8014771Z
2026-10-25T02:26:58.8014955Z β react(memo-dependencies): Found missing memoization dependencies
2026-10-25T02:26:58.8015086Z ββ[apps/mobile/src/native/T3ComposerEditor.ios.tsx:257:5]
2026-10-25T02:26:58.8015220Z 249 β mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-25T02:26:58.8015322Z 250 β nativeEventSnapshotsRef.current.push({
2026-10-25T02:26:58.8015410Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8015874Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8016000Z 251 β eventCount: acknowledgedEventCount,
2026-10-25T02:26:58.8016061Z 252 β value,
2026-10-25T02:26:58.8016138Z 253 β selection: nextSelection,
2026-10-25T02:26:58.8016197Z 254 β });
2026-10-25T02:26:58.8016280Z 255 β return acknowledgedEventCount;
2026-10-25T02:26:58.8016334Z 256 β },
2026-10-25T02:26:58.8016392Z 257 β [],
2026-10-25T02:26:58.8016464Z Β· ββ¬
2026-10-25T02:26:58.8016642Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.8016694Z 258 β );
2026-10-25T02:26:58.8016746Z β°ββββ
2026-10-25T02:26:58.8016948Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-25T02:26:58.8017257Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8017260Z
2026-10-25T02:26:58.8017450Z β eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-25T02:26:58.8017590Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-25T02:26:58.8017788Z 16 β import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-25T02:26:58.8017981Z 17 β import { Image, Platform, StyleSheet } from "react-native";
2026-10-25T02:26:58.8018056Z Β· βββ¬ββ
2026-10-25T02:26:58.8018178Z Β· β°ββ 'Image' is imported here
2026-10-25T02:26:58.8018234Z 18 β
2026-10-25T02:26:58.8018287Z β°ββββ
2026-10-25T02:26:58.8018383Z help: Consider removing this import.
2026-10-25T02:26:58.8018386Z
2026-10-25T02:26:58.8018582Z β react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-25T02:26:58.8018724Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:227:6]
2026-10-25T02:26:58.8018887Z 223 β nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-25T02:26:58.8018982Z 224 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8019073Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8019519Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8019591Z 225 β mostRecentEventCount,
2026-10-25T02:26:58.8019645Z 226 β );
2026-10-25T02:26:58.8019765Z 227 β }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-25T02:26:58.8019895Z Β· βββββββββββββββββββββββββββ¬ββββββββββββββββββββββββββ
2026-10-25T02:26:58.8020088Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.8020178Z 228 β const assumedValue = props.value;
2026-10-25T02:26:58.8020231Z β°ββββ
2026-10-25T02:26:58.8020398Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-25T02:26:58.8020706Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8020708Z
2026-10-25T02:26:58.8020918Z β react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-25T02:26:58.8021058Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:233:7]
2026-10-25T02:26:58.8021198Z 232 β nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-25T02:26:58.8021286Z 233 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8021376Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8021832Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8021905Z 234 β controlledEventCount,
2026-10-25T02:26:58.8021969Z 235 β assumedValue,
2026-10-25T02:26:58.8022023Z 236 β );
2026-10-25T02:26:58.8022179Z 237 β }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-25T02:26:58.8022312Z Β· ββββββββββββ¬ββββββββββ
2026-10-25T02:26:58.8022515Z Β· β°ββ Unnecessary dependency `controlledDocumentJson`
2026-10-25T02:26:58.8022670Z 238 β const acceptNativeEvent = useCallback(
2026-10-25T02:26:58.8022756Z β°ββββ
2026-10-25T02:26:58.8023217Z 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-25T02:26:58.8023524Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8023527Z
2026-10-25T02:26:58.8023671Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8023814Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-25T02:26:58.8023937Z 159 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8024050Z 160 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8024169Z Β· ββββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.8024333Z Β· β°ββ Cannot access ref value during render
2026-10-25T02:26:58.8024389Z 161 β });
2026-10-25T02:26:58.8024440Z β°ββββ
2026-10-25T02:26:58.8024900Z 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-25T02:26:58.8025259Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8025263Z
2026-10-25T02:26:58.8025414Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8025560Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:160:29]
2026-10-25T02:26:58.8025679Z 159 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8025789Z 160 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8025963Z Β· ββββββββββββββ¬ββββββββββββ
2026-10-25T02:26:58.8026167Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8026222Z 161 β });
2026-10-25T02:26:58.8026274Z β°ββββ
2026-10-25T02:26:58.8026734Z 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-25T02:26:58.8027024Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8027026Z
2026-10-25T02:26:58.8027169Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8027308Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:23]
2026-10-25T02:26:58.8027365Z 161 β });
2026-10-25T02:26:58.8027455Z 162 β confirmedTokensRef.current = tokens;
2026-10-25T02:26:58.8027578Z Β· ββββββββββ¬βββββββββββββ¬βββ
2026-10-25T02:26:58.8027762Z Β· β β°ββ Cannot update ref value during render
2026-10-25T02:26:58.8027952Z Β· β°ββ This value is a ref
2026-10-25T02:26:58.8028076Z 163 β return JSON.stringify(
2026-10-25T02:26:58.8028156Z β°ββββ
2026-10-25T02:26:58.8028619Z 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-25T02:26:58.8028911Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8028914Z
2026-10-25T02:26:58.8029057Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8029198Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:204:5]
2026-10-25T02:26:58.8029273Z 203 β mostRecentEventCount,
2026-10-25T02:26:58.8029361Z 204 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8029464Z Β· ββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.8029649Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8029704Z 205 β );
2026-10-25T02:26:58.8029753Z β°ββββ
2026-10-25T02:26:58.8030209Z 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-25T02:26:58.8030496Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8030498Z
2026-10-25T02:26:58.8030645Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8030787Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:210:5]
2026-10-25T02:26:58.8030854Z 209 β mostRecentEventCount,
2026-10-25T02:26:58.8030943Z 210 β nativeEventSnapshotsRef.current,
2026-10-25T02:26:58.8031045Z Β· ββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.8031232Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8031287Z 211 β );
2026-10-25T02:26:58.8031338Z β°ββββ
2026-10-25T02:26:58.8031795Z 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-25T02:26:58.8032088Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8032093Z
2026-10-25T02:26:58.8032275Z β react(memo-dependencies): Found missing memoization dependencies
2026-10-25T02:26:58.8032414Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:195:6]
2026-10-25T02:26:58.8032536Z 159 β const tokens = collectComposerInlineTokens(props.value, {
2026-10-25T02:26:58.8032649Z 160 β preserveTrailingFrom: confirmedTokensRef.current,
2026-10-25T02:26:58.8032758Z Β· ββββββββββ¬ββββββββ
2026-10-25T02:26:58.8033275Z Β· β°ββ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8033376Z 161 β });
2026-10-25T02:26:58.8033501Z 162 β confirmedTokensRef.current = tokens;
2026-10-25T02:26:58.8033574Z 163 β return JSON.stringify(
2026-10-25T02:26:58.8033735Z 164 β composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-25T02:26:58.8033803Z 165 β const record =
2026-10-25T02:26:58.8033884Z 166 β token.type === "context"
2026-10-25T02:26:58.8034045Z 167 β ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-25T02:26:58.8034113Z 168 β : undefined;
2026-10-25T02:26:58.8034222Z 169 β const presentation = contextChipPresentation(
2026-10-25T02:26:58.8034331Z 170 β token.type === "context" ? token.kind : token.type,
2026-10-25T02:26:58.8034398Z 171 β record,
2026-10-25T02:26:58.8034457Z 172 β );
2026-10-25T02:26:58.8034543Z 173 β const icon = contextChipIcon(
2026-10-25T02:26:58.8034612Z 174 β presentation,
2026-10-25T02:26:58.8034753Z 175 β token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-25T02:26:58.8034809Z 176 β );
2026-10-25T02:26:58.8034872Z 177 β return {
2026-10-25T02:26:58.8034943Z 178 β type: token.type,
2026-10-25T02:26:58.8035016Z 179 β source: token.source,
2026-10-25T02:26:58.8035089Z 180 β start: token.start,
2026-10-25T02:26:58.8035154Z 181 β end: token.end,
2026-10-25T02:26:58.8035302Z 182 β accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-25T02:26:58.8035362Z 183 β label:
2026-10-25T02:26:58.8035445Z 184 β token.type === "skill"
2026-10-25T02:26:58.8035555Z 185 β ? (skillLabels.get(token.value) ?? token.value)
2026-10-25T02:26:58.8035639Z 186 β : token.type === "context"
2026-10-25T02:26:58.8035901Z 187 β ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " Β· unavailable"}`
2026-10-25T02:26:58.8035992Z 188 β : basename(token.value),
2026-10-25T02:26:58.8036137Z 189 β detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-25T02:26:58.8036229Z 190 β iconUri: contextChipIconUri(icon),
2026-10-25T02:26:58.8036316Z 191 β tintsIcon: icon.kind === "chip",
2026-10-25T02:26:58.8036375Z 192 β };
2026-10-25T02:26:58.8036434Z 193 β }),
2026-10-25T02:26:58.8036490Z 194 β );
2026-10-25T02:26:58.8036623Z 195 β }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-25T02:26:58.8036774Z Β· ββββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββ
2026-10-25T02:26:58.8036975Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.8037113Z 196 β // Every render resolves against the snapshot history, so a render whose
2026-10-25T02:26:58.8037163Z β°ββββ
2026-10-25T02:26:58.8037367Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-25T02:26:58.8037677Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8037679Z
2026-10-25T02:26:58.8037925Z β react(memo-dependencies): Found missing memoization dependencies
2026-10-25T02:26:58.8038145Z ββ[apps/mobile/src/native/T3ComposerEditor.native.tsx:255:5]
2026-10-25T02:26:58.8038272Z 247 β mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-25T02:26:58.8038372Z 248 β nativeEventSnapshotsRef.current.push({
2026-10-25T02:26:58.8038468Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8038917Z Β· β°ββ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-25T02:26:58.8039006Z 249 β eventCount: acknowledgedEventCount,
2026-10-25T02:26:58.8039069Z 250 β value,
2026-10-25T02:26:58.8039148Z 251 β selection: nextSelection,
2026-10-25T02:26:58.8039213Z 252 β });
2026-10-25T02:26:58.8039297Z 253 β return acknowledgedEventCount;
2026-10-25T02:26:58.8039354Z 254 β },
2026-10-25T02:26:58.8039409Z 255 β [],
2026-10-25T02:26:58.8039476Z Β· ββ¬
2026-10-25T02:26:58.8039653Z Β· β°ββ This dependency list is missing values used by the callback
2026-10-25T02:26:58.8039708Z 256 β );
2026-10-25T02:26:58.8039760Z β°ββββ
2026-10-25T02:26:58.8039965Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-25T02:26:58.8040271Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-25T02:26:58.8040273Z
2026-10-25T02:26:58.8040639Z β 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-25T02:26:58.8040768Z ββ[apps/server/src/auth/RpcAuthorization.ts:238:17]
2026-10-25T02:26:58.8040904Z 237 β const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-25T02:26:58.8041035Z 238 β const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-25T02:26:58.8041138Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.8041276Z 239 β const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-25T02:26:58.8041328Z β°ββββ
2026-10-25T02:26:58.8041331Z
2026-10-25T02:26:58.8041688Z β 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-25T02:26:58.8041873Z ββ[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-25T02:26:58.8042039Z 255 β if (method === WS_METHODS.assetsCreateUrl) {
2026-10-25T02:26:58.8042202Z 256 β const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-25T02:26:58.8042317Z Β· ββββββββββββββββββββββββ
2026-10-25T02:26:58.8042376Z 257 β return [
2026-10-25T02:26:58.8042429Z β°ββββ
2026-10-25T02:26:58.8042432Z
2026-10-25T02:26:58.8042629Z β eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-25T02:26:58.8042734Z ββ[apps/server/src/auth/http.ts:28:10]
2026-10-25T02:26:58.8042820Z 27 β import * as Schema from "effect/Schema";
2026-10-25T02:26:58.8042912Z 28 β import { identity } from "effect/Function";
2026-10-25T02:26:58.8042988Z Β· βββββ¬βββ
2026-10-25T02:26:58.8043125Z Β· β°ββ 'identity' is imported here
2026-10-25T02:26:58.8043211Z 29 β import * as Layer from "effect/Layer";
2026-10-25T02:26:58.8043265Z β°ββββ
2026-10-25T02:26:58.8043362Z help: Consider removing this import.
2026-10-25T02:26:58.8043364Z
2026-10-25T02:26:58.8043590Z β unicorn(no-useless-spread): Using a spread operator here creates a new array unnecessarily.
2026-10-25T02:26:58.8043725Z ββ[apps/mobile/src/native/native-layout-metrics.tsx:43:27]
2026-10-25T02:26:58.8043795Z 42 β latestMetrics = next;
2026-10-25T02:26:58.8043908Z 43 β for (const settle of [...metricsWaiters]) settle(next);
2026-10-25T02:26:58.8043992Z Β· βββ
2026-10-25T02:26:58.8044056Z 44 β setMetrics(next);
2026-10-25T02:26:58.8044111Z β°ββββ
2026-10-25T02:26:58.8044302Z help: `forβ¦of` can iterate over iterable, it's unnecessary to convert to an array.
2026-10-25T02:26:58.8044307Z
2026-10-25T02:26:58.8044504Z β eslint(no-unused-vars): Identifier 'FormSheet' is imported but never used.
2026-10-25T02:26:58.8044652Z ββ[apps/mobile/src/native/createV5StackNavigator.ios.tsx:26:10]
2026-10-25T02:26:58.8044753Z 25 β import { StyleSheet, View } from "react-native";
2026-10-25T02:26:58.8044867Z 26 β import { FormSheet, Stack } from "react-native-screens";
2026-10-25T02:26:58.8044944Z Β· βββββ¬ββββ
2026-10-25T02:26:58.8045076Z Β· β°ββ 'FormSheet' is imported here
2026-10-25T02:26:58.8045224Z 27 β import { NativeScrollEdgeEffectsContext } from "./NativeScrollViewMarker";
2026-10-25T02:26:58.8045278Z β°ββββ
2026-10-25T02:26:58.8045380Z help: Consider removing this import.
2026-10-25T02:26:58.8045385Z
2026-10-25T02:26:58.8045615Z β eslint(no-unused-vars): Identifier 'nativeWorkspacePopAction' is imported but never used.
2026-10-25T02:26:58.8045759Z ββ[apps/mobile/src/native/createV5StackNavigator.ios.tsx:33:3]
2026-10-25T02:26:58.8045870Z 32 β nativeStackPopAction,
2026-10-25T02:26:58.8045946Z 33 β nativeWorkspacePopAction,
2026-10-25T02:26:58.8046035Z Β· βββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8046193Z Β· β°ββ 'nativeWorkspacePopAction' is imported here
2026-10-25T02:26:58.8046269Z 34 β nativeWorkspacePopCount,
2026-10-25T02:26:58.8046321Z β°ββββ
2026-10-25T02:26:58.8046416Z help: Consider removing this import.
2026-10-25T02:26:58.8046419Z
2026-10-25T02:26:58.8046701Z β eslint(no-unused-vars): Identifier 'nativeWorkspacePopCount' is imported but never used.
2026-10-25T02:26:58.8046934Z ββ[apps/mobile/src/native/createV5StackNavigator.ios.tsx:34:3]
2026-10-25T02:26:58.8047009Z 33 β nativeWorkspacePopAction,
2026-10-25T02:26:58.8047079Z 34 β nativeWorkspacePopCount,
2026-10-25T02:26:58.8047164Z Β· ββββββββββββ¬βββββββββββ
2026-10-25T02:26:58.8047322Z Β· β°ββ 'nativeWorkspacePopCount' is imported here
2026-10-25T02:26:58.8047402Z 35 β partitionStackPresentations,
2026-10-25T02:26:58.8047456Z β°ββββ
2026-10-25T02:26:58.8047548Z help: Consider removing this import.
2026-10-25T02:26:58.8047551Z
2026-10-25T02:26:58.8047694Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8047820Z ββ[apps/mobile/src/native/StackHeader.tsx:202:9]
2026-10-25T02:26:58.8047887Z 201 β "options",
2026-10-25T02:26:58.8047979Z 202 β latestOptionFunctionsRef.current,
2026-10-25T02:26:58.8048090Z Β· βββββββββββββββββ¬βββββββββββββββ
2026-10-25T02:26:58.8048281Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8048377Z 203 β optionFunctionWrappersRef.current,
2026-10-25T02:26:58.8048428Z β°ββββ
2026-10-25T02:26:58.8048894Z 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-25T02:26:58.8049191Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8049197Z
2026-10-25T02:26:58.8049342Z β react(refs): Cannot access refs during render
2026-10-25T02:26:58.8049458Z ββ[apps/mobile/src/native/StackHeader.tsx:203:9]
2026-10-25T02:26:58.8049550Z 202 β latestOptionFunctionsRef.current,
2026-10-25T02:26:58.8049645Z 203 β optionFunctionWrappersRef.current,
2026-10-25T02:26:58.8049752Z Β· βββββββββββββββββ¬ββββββββββββββββ
2026-10-25T02:26:58.8049941Z Β· β°ββ Passing a ref to a function may read its value during render
2026-10-25T02:26:58.8050032Z 204 β ) as NativeStackNavigationOptions)
2026-10-25T02:26:58.8050085Z β°ββββ
2026-10-25T02:26:58.8050549Z 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-25T02:26:58.8050840Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-25T02:26:58.8050843Z
2026-10-25T02:26:58.8051210Z β 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-25T02:26:58.8051337Z ββ[apps/server/src/assets/AssetAccess.test.ts:975:35]
2026-10-25T02:26:58.8051486Z 974 β // Every client and server release spells the resource this way on the wire.
2026-10-25T02:26:58.8051704Z 975 β const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-25T02:26:58.8051908Z Β· ββββββββββββββββββββββββββ
2026-10-25T02:26:58.8052020Z 976 β resource: { _tag: "github-media", cwd: "/repo", url },
2026-10-25T02:26:58.8052072Z β°ββββ
2026-10-25T02:26:58.8052074Z
2026-10-25T02:26:58.8052515Z β 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-25T02:26:58.8052647Z ββ[apps/server/src/assets/AssetAccess.test.ts:1012:32]
2026-10-25T02:26:58.8052782Z 1011 β expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-25T02:26:58.8052969Z 1012 β const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-25T02:26:58.8053089Z Β· βββββββββββββββββββ
2026-10-25T02:26:58.8053183Z 1013 β expect(encoded).not.toContain(url);
2026-10-25T02:26:58.8053236Z β°ββββ
2026-10-25T02:26:58.8053239Z
2026-10-25T02:26:58.8053400Z β eslint(no-empty-pattern): Empty array binding pattern
2026-10-25T02:26:58.8053556Z ββ[apps/server/src/pullRequest/PullRequestService.test.ts:1436:12]
2026-10-25T02:26:58.8053612Z 1435 β
2026-10-25T02:26:58.8053680Z 1436 β for (const [] of [
2026-10-25T02:26:58.8053752Z Β· ββ
2026-10-25T02:26:58.8053824Z 1437 β ["github", "github.com"],
2026-10-25T02:26:58.8053875Z β°ββββ
2026-10-25T02:26:58.8054150Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-25T02:26:58.8054162Z
2026-10-25T02:26:58.8054423Z β eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-25T02:26:58.8054543Z ββ[apps/server/src/usage/UsageService.ts:162:7]
2026-10-25T02:26:58.8054595Z 161 β
2026-10-25T02:26:58.8054676Z 162 β const layerTest = Layer.succeed(
2026-10-25T02:26:58.8054748Z Β· βββββ¬ββββ
2026-10-25T02:26:58.8054882Z Β· β°ββ 'layerTest' is declared here
2026-10-25T02:26:58.8054948Z 163 β UsageService,
2026-10-25T02:26:58.8054999Z β°ββββ
2026-10-25T02:26:58.8055102Z help: Consider removing this declaration.
2026-10-25T02:26:58.8055105Z
2026-10-25T02:26:58.8055270Z β react(purity): Cannot call impure function during render
2026-10-25T02:26:58.8055459Z ββ[apps/web/src/components/CommandPalette.tsx:2048:20]
2026-10-25T02:26:58.8055654Z 2047 β title: inferProjectTitleFromPath(destinationPath),
2026-10-25T02:26:58.8055748Z 2048 β createdAt: new Date().toISOString(),
2026-10-25T02:26:58.8055870Z Β· ββββββ¬ββββ
2026-10-25T02:26:58.8056025Z Β· β°ββ Cannot call impure function
2026-10-25T02:26:58.8056133Z 2049 β remoteUrl: addProjectCloneFlow.remoteUrl,
2026-10-25T02:26:58.8056184Z β°ββββ
2026-10-25T02:26:58.8056460Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-25T02:26:58.8056756Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-25T02:26:58.8056761Z
2026-10-25T02:26:58.8056844Z Found 3 errors and 377 warnings in 5539 files (4.9s, 8 threads)
2026-10-25T02:26:58.8064866Z ##[error]Process completed with exit code 1.
2026-10-25T02:26:58.8134575Z Post job cleanup.
2026-10-25T02:26:58.8147741Z ##[start-action display=Cache full pnpm store;id=__5a90bdd6-2b8a-4139-a4ea-06b1c8342ce4.__actions_cache]
2026-10-25T02:26:58.8148668Z ##[end-action id=__5a90bdd6-2b8a-4139-a4ea-06b1c8342ce4.__actions_cache;outcome=skipped;conclusion=skipped;duration_ms=0]
2026-10-25T02:26:58.8149307Z ##[start-action display=Cache Vite+;id=__5a90bdd6-2b8a-4139-a4ea-06b1c8342ce4.vp_cache]
2026-10-25T02:26:58.8150006Z ##[end-action id=__5a90bdd6-2b8a-4139-a4ea-06b1c8342ce4.vp_cache;outcome=skipped;conclusion=skipped;duration_ms=0]
2026-10-25T02:26:58.8179003Z Post job cleanup.
2026-10-25T02:26:58.8588614Z [command]/usr/local/bin/git version
2026-10-25T02:26:58.8636214Z git version 2.55.0
2026-10-25T02:26:58.8653020Z Temporarily overriding HOME='/home/runner/_work/_temp/6d009772-005b-49e7-826a-2e9a1afdd4ed' before making global git config changes
2026-10-25T02:26:58.8653174Z Adding repository directory to the temporary git global config as a safe directory
2026-10-25T02:26:58.8655817Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-25T02:26:58.8675760Z Removing SSH command configuration
2026-10-25T02:26:58.8678836Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-25T02:26:58.8699502Z [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-25T02:26:58.8821029Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-25T02:26:58.8837819Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-25T02:26:58.8871696Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-25T02:26:58.8892018Z ##[group]Run '/job_completed.sh'
2026-10-25T02:26:58.8902124Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-25T02:26:58.8902170Z env:
2026-10-25T02:26:58.8902233Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 156
2026-10-25T02:26:58.8902289Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 382
2026-10-25T02:26:58.8902339Z BLACKSMITH_CHECK_RUN_ID: 121052657821
2026-10-25T02:26:58.8902394Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-25T02:26:58.8902448Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-25T02:26:58.8902501Z ##[endgroup]
2026-10-25T02:26:58.8978964Z Docker container cache not activated, skipping hash computation.
2026-10-25T02:26:58.9236547Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-25T02:26:58.9281251Z Cleaning up orphan processes