GitHub check
256 KB of 603 KB loaded Download the full log (603 KB)
347 KB of earlier output not loaded
25.1949544Z ╰────
2026-10-24T19:50:25.1950155Z 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-24T19:50:25.1950487Z 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-24T19:50:25.1950493Z
2026-10-24T19:50:25.1950697Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.1950874Z ╭─[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
2026-10-24T19:50:25.1950954Z 62 │ return () => scheduler.cancel();
2026-10-24T19:50:25.1951054Z 63 │ }, [enabled, resetKey, rows.length, scheduler]);
2026-10-24T19:50:25.1951181Z · ───┬─── ─────┬─────
2026-10-24T19:50:25.1951377Z · │ ╰── Unnecessary dependency `rows.length`
2026-10-24T19:50:25.1951523Z · ╰── Unnecessary dependency `enabled`
2026-10-24T19:50:25.1951579Z 64 │
2026-10-24T19:50:25.1951628Z ╰────
2026-10-24T19:50:25.1951928Z 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-24T19:50:25.1952242Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1952245Z
2026-10-24T19:50:25.1952522Z ⚠ eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.1952661Z ╭─[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
2026-10-24T19:50:25.1952712Z 913 │
2026-10-24T19:50:25.1952958Z 914 │ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
2026-10-24T19:50:25.1953073Z · ─────┬─────
2026-10-24T19:50:25.1953210Z · ╰── 'layerDaemon' is declared here
2026-10-24T19:50:25.1953296Z 915 │ runDaemon.pipe(Effect.forkScoped),
2026-10-24T19:50:25.1953347Z ╰────
2026-10-24T19:50:25.1953452Z help: Consider removing this declaration.
2026-10-24T19:50:25.1953455Z
2026-10-24T19:50:25.1953717Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1953928Z ╭─[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
2026-10-24T19:50:25.1953980Z 104 │
2026-10-24T19:50:25.1954045Z 105 │ useEffect(() => {
2026-10-24T19:50:25.1954117Z · ────┬────
2026-10-24T19:50:25.1954253Z · ╰── This is the containing effect
2026-10-24T19:50:25.1954336Z 106 │ clearReviewCommentTarget();
2026-10-24T19:50:25.1954434Z 107 │ setPendingNativeCommentSelection(null);
2026-10-24T19:50:25.1954541Z · ────────────────┬───────────────
2026-10-24T19:50:25.1954721Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1954794Z 108 │ }, [selectedSection?.id]);
2026-10-24T19:50:25.1954846Z ╰────
2026-10-24T19:50:25.1955465Z 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-24T19:50:25.1955795Z 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-24T19:50:25.1955800Z
2026-10-24T19:50:25.1956061Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1956249Z ╭─[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
2026-10-24T19:50:25.1956302Z 109 │
2026-10-24T19:50:25.1956365Z 110 │ useEffect(() => {
2026-10-24T19:50:25.1956435Z · ────┬────
2026-10-24T19:50:25.1956565Z · ╰── This is the containing effect
2026-10-24T19:50:25.1956653Z 111 │ if (activeCommentTarget === null) {
2026-10-24T19:50:25.1956760Z 112 │ setPendingNativeCommentSelection(null);
2026-10-24T19:50:25.1956871Z · ────────────────┬───────────────
2026-10-24T19:50:25.1957050Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1957105Z 113 │ }
2026-10-24T19:50:25.1957157Z ╰────
2026-10-24T19:50:25.1957767Z 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-24T19:50:25.1958091Z 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-24T19:50:25.1958093Z
2026-10-24T19:50:25.1958352Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.1958573Z ╭─[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
2026-10-24T19:50:25.1958670Z 107 │ setPendingNativeCommentSelection(null);
2026-10-24T19:50:25.1958741Z 108 │ }, [selectedSection?.id]);
2026-10-24T19:50:25.1958828Z · ─────────┬─────────
2026-10-24T19:50:25.1958991Z · ╰── Unnecessary dependency `selectedSection?.id`
2026-10-24T19:50:25.1959043Z 109 │
2026-10-24T19:50:25.1959092Z ╰────
2026-10-24T19:50:25.1959393Z 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-24T19:50:25.1959713Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1959719Z
2026-10-24T19:50:25.1959980Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1960149Z ╭─[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
2026-10-24T19:50:25.1960201Z 100 │
2026-10-24T19:50:25.1960265Z 101 │ useEffect(() => {
2026-10-24T19:50:25.1960335Z · ────┬────
2026-10-24T19:50:25.1960463Z · ╰── This is the containing effect
2026-10-24T19:50:25.1960567Z 102 │ if (!target || selectedLines.length === 0) {
2026-10-24T19:50:25.1960652Z 103 │ setHighlightedLinesById({});
2026-10-24T19:50:25.1960748Z · ───────────┬───────────
2026-10-24T19:50:25.1960925Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1960987Z 104 │ return;
2026-10-24T19:50:25.1961039Z ╰────
2026-10-24T19:50:25.1961652Z 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-24T19:50:25.1961979Z 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-24T19:50:25.1961981Z
2026-10-24T19:50:25.1962202Z ⚠ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T19:50:25.1962428Z ╭─[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-24T19:50:25.1962480Z 52 │
2026-10-24T19:50:25.1962545Z 53 │ for (const {} of [
2026-10-24T19:50:25.1962614Z · ──
2026-10-24T19:50:25.1962681Z 54 │ { healthy: true },
2026-10-24T19:50:25.1962732Z ╰────
2026-10-24T19:50:25.1962967Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T19:50:25.1962970Z
2026-10-24T19:50:25.1963229Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1963377Z ╭─[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-24T19:50:25.1963434Z 61 │ }, []);
2026-10-24T19:50:25.1963505Z 62 │ useEffect(() => {
2026-10-24T19:50:25.1963580Z · ────┬────
2026-10-24T19:50:25.1963710Z · ╰── This is the containing effect
2026-10-24T19:50:25.1963861Z 63 │ if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-24T19:50:25.1964007Z · ───────┬──────
2026-10-24T19:50:25.1964221Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1964298Z 64 │ }, [playbackUrl, resolvedUrl]);
2026-10-24T19:50:25.1964349Z ╰────
2026-10-24T19:50:25.1964963Z 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-24T19:50:25.1965297Z 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-24T19:50:25.1965299Z
2026-10-24T19:50:25.1965497Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.1965649Z ╭─[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
2026-10-24T19:50:25.1965759Z 222 │ ? snippetTokens.map((line, lineIndex) => (
2026-10-24T19:50:25.1965854Z 223 │ <NativeText key={lineIndex}>
2026-10-24T19:50:25.1965962Z · ───────────────
2026-10-24T19:50:25.1966059Z 224 │ {lineIndex > 0 ? "\n" : ""}
2026-10-24T19:50:25.1966113Z ╰────
2026-10-24T19:50:25.1966262Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.1966265Z
2026-10-24T19:50:25.1966514Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.1966664Z ╭─[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
2026-10-24T19:50:25.1966739Z 226 │ <NativeText
2026-10-24T19:50:25.1966822Z 227 │ key={tokenIndex}
2026-10-24T19:50:25.1966927Z · ────────────────
2026-10-24T19:50:25.1966998Z 228 │ style={{
2026-10-24T19:50:25.1967049Z ╰────
2026-10-24T19:50:25.1967266Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.1967314Z
2026-10-24T19:50:25.1967574Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1967708Z ╭─[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T19:50:25.1967812Z 66 │ const { id: attachmentId, fileUri } = attachment;
2026-10-24T19:50:25.1967877Z 67 │ useEffect(() => {
2026-10-24T19:50:25.1967947Z · ────┬────
2026-10-24T19:50:25.1968076Z · ╰── This is the containing effect
2026-10-24T19:50:25.1968140Z 68 │ setUri(null);
2026-10-24T19:50:25.1968208Z · ───┬──
2026-10-24T19:50:25.1968374Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1968436Z 69 │ setError(null);
2026-10-24T19:50:25.1968493Z ╰────
2026-10-24T19:50:25.1969107Z 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-24T19:50:25.1969431Z 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-24T19:50:25.1969433Z
2026-10-24T19:50:25.1969637Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.1969772Z ╭─[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T19:50:25.1969827Z 90 │ };
2026-10-24T19:50:25.1969905Z 91 │ }, [attachmentId, fileUri]);
2026-10-24T19:50:25.1970026Z · ──────┬───── ───┬───
2026-10-24T19:50:25.1970211Z · │ ╰── Unnecessary dependency `fileUri`
2026-10-24T19:50:25.1970360Z · ╰── Unnecessary dependency `attachmentId`
2026-10-24T19:50:25.1970494Z 92 │ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T19:50:25.1970546Z ╰────
2026-10-24T19:50:25.1970844Z 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-24T19:50:25.1971159Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1971167Z
2026-10-24T19:50:25.1971388Z ⚠ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T19:50:25.1971529Z ╭─[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T19:50:25.1971593Z 212 │ useEffect(() => {
2026-10-24T19:50:25.1971705Z 213 │ if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T19:50:25.1971804Z · ──┬──
2026-10-24T19:50:25.1971958Z · ╰── Missing dependency `props`
2026-10-24T19:50:25.1972064Z 214 │ }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T19:50:25.1972174Z · ──────────┬─────────
2026-10-24T19:50:25.1972466Z · ╰── Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T19:50:25.1972574Z 215 │ const { source } = props;
2026-10-24T19:50:25.1972625Z ╰────
2026-10-24T19:50:25.1973059Z 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-24T19:50:25.1973376Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1973379Z
2026-10-24T19:50:25.1973548Z ⚠ react(purity): Cannot call impure function during render
2026-10-24T19:50:25.1973671Z ╭─[apps/web/src/hooks/useThreadActions.ts:821:56]
2026-10-24T19:50:25.1973780Z 820 │ const resolved = resolveThreadTarget(target);
2026-10-24T19:50:25.1973975Z 821 │ if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
2026-10-24T19:50:25.1974099Z · ─────┬────
2026-10-24T19:50:25.1974270Z · ╰── Cannot call impure function
2026-10-24T19:50:25.1974350Z 822 │ return AsyncResult.failure(
2026-10-24T19:50:25.1974400Z ╰────
2026-10-24T19:50:25.1974682Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T19:50:25.1974980Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T19:50:25.1974988Z
2026-10-24T19:50:25.1975160Z ⚠ react(purity): Cannot call impure function during render
2026-10-24T19:50:25.1975280Z ╭─[apps/web/src/hooks/useThreadActions.ts:709:46]
2026-10-24T19:50:25.1975352Z 708 │ const wokeAt = resolved
2026-10-24T19:50:25.1975487Z 709 │ ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
2026-10-24T19:50:25.1975599Z · ─────┬────
2026-10-24T19:50:25.1975761Z · ╰── Cannot call impure function
2026-10-24T19:50:25.1975821Z 710 │ : null;
2026-10-24T19:50:25.1975872Z ╰────
2026-10-24T19:50:25.1976151Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T19:50:25.1976453Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T19:50:25.1976458Z
2026-10-24T19:50:25.1976718Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1976853Z ╭─[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T19:50:25.1976906Z 57 │
2026-10-24T19:50:25.1976971Z 58 │ useEffect(() => {
2026-10-24T19:50:25.1977041Z · ────┬────
2026-10-24T19:50:25.1977171Z · ╰── This is the containing effect
2026-10-24T19:50:25.1977267Z 59 │ const controller = new AbortController();
2026-10-24T19:50:25.1977340Z 60 │ setLoadState("pending");
2026-10-24T19:50:25.1977471Z · ──────┬─────
2026-10-24T19:50:25.1977671Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1977833Z 61 │ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T19:50:25.1977885Z ╰────
2026-10-24T19:50:25.1978494Z 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-24T19:50:25.1978818Z 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-24T19:50:25.1978821Z
2026-10-24T19:50:25.1979030Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.1979167Z ╭─[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T19:50:25.1979249Z 70 │ return () => controller.abort();
2026-10-24T19:50:25.1979344Z 71 │ }, [player, props.playRequested, attempt]);
2026-10-24T19:50:25.1979520Z · ───┬── ─────────┬───────── ───┬───
2026-10-24T19:50:25.1979753Z · │ │ ╰── Unnecessary dependency `attempt`
2026-10-24T19:50:25.1979960Z · │ ╰── Unnecessary dependency `props.playRequested`
2026-10-24T19:50:25.1980107Z · ╰── Unnecessary dependency `player_0`
2026-10-24T19:50:25.1980163Z 72 │
2026-10-24T19:50:25.1980214Z ╰────
2026-10-24T19:50:25.1980514Z 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-24T19:50:25.1980835Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1980838Z
2026-10-24T19:50:25.1981036Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.1981193Z ╭─[apps/mobile/src/components/ComposerContextSheet.tsx:272:25]
2026-10-24T19:50:25.1981309Z 271 │ {record.elements?.map((element, index) => (
2026-10-24T19:50:25.1981489Z 272 │ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T19:50:25.1981651Z · ───────────────────────────────────────────────────────
2026-10-24T19:50:25.1981732Z 273 │ <ContextField
2026-10-24T19:50:25.1981789Z ╰────
2026-10-24T19:50:25.1981943Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.1981946Z
2026-10-24T19:50:25.1982214Z ⚠ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.1982364Z ╭─[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-24T19:50:25.1982424Z 3754 │
2026-10-24T19:50:25.1982632Z 3755 │ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-24T19:50:25.1982764Z · ──┬──
2026-10-24T19:50:25.1982934Z · ╰── 'layer' is declared here
2026-10-24T19:50:25.1983008Z 3756 │ Layer.effect(
2026-10-24T19:50:25.1983068Z ╰────
2026-10-24T19:50:25.1983174Z help: Consider removing this declaration.
2026-10-24T19:50:25.1983183Z
2026-10-24T19:50:25.1983389Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.1983523Z ╭─[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T19:50:25.1983586Z 81 │ },
2026-10-24T19:50:25.1983649Z 82 │ [draftKey],
2026-10-24T19:50:25.1983727Z · ────┬───
2026-10-24T19:50:25.1983872Z · ╰── Unnecessary dependency `draftKey`
2026-10-24T19:50:25.1983956Z 83 │ );
2026-10-24T19:50:25.1984009Z ╰────
2026-10-24T19:50:25.1984323Z 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-24T19:50:25.1984650Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1984653Z
2026-10-24T19:50:25.1984919Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1985059Z ╭─[apps/mobile/src/components/ProjectFavicon.tsx:172:5]
2026-10-24T19:50:25.1985253Z 167 │ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T19:50:25.1985331Z 168 │ useLayoutEffect(() => {
2026-10-24T19:50:25.1985420Z · ───────┬───────
2026-10-24T19:50:25.1985561Z · ╰── This is the containing effect
2026-10-24T19:50:25.1985669Z 169 │ if (faviconRequest === null) return;
2026-10-24T19:50:25.1985728Z 170 │
2026-10-24T19:50:25.1985865Z 171 │ const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T19:50:25.1985966Z 172 │ setActiveFaviconRequest(faviconRequest);
2026-10-24T19:50:25.1986059Z · ───────────┬───────────
2026-10-24T19:50:25.1986258Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1986403Z 173 │ return endRequest;
2026-10-24T19:50:25.1986481Z ╰────
2026-10-24T19:50:25.1987300Z 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-24T19:50:25.1987702Z 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-24T19:50:25.1987705Z
2026-10-24T19:50:25.1987991Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.1988220Z ╭─[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:333:7]
2026-10-24T19:50:25.1988294Z 328 │ };
2026-10-24T19:50:25.1988400Z 329 │ useEffect(() => {
2026-10-24T19:50:25.1988507Z · ────┬────
2026-10-24T19:50:25.1988680Z · ╰── This is the containing effect
2026-10-24T19:50:25.1988807Z 330 │ if (!guidesEnabled && section === "guide") {
2026-10-24T19:50:25.1988944Z 331 │ requestedSection.current = "overview";
2026-10-24T19:50:25.1989146Z 332 │ currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T19:50:25.1989244Z 333 │ setSection("overview");
2026-10-24T19:50:25.1989373Z · ─────┬────
2026-10-24T19:50:25.1989561Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.1989655Z 334 │ }
2026-10-24T19:50:25.1989741Z ╰────
2026-10-24T19:50:25.1990395Z 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-24T19:50:25.1990861Z 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-24T19:50:25.1990888Z
2026-10-24T19:50:25.1991110Z ⚠ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T19:50:25.1991321Z ╭─[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:6]
2026-10-24T19:50:25.1991447Z 330 │ if (!guidesEnabled && section === "guide") {
2026-10-24T19:50:25.1991594Z 331 │ requestedSection.current = "overview";
2026-10-24T19:50:25.1991699Z · ────────┬───────
2026-10-24T19:50:25.1992195Z · ╰── 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-24T19:50:25.1992399Z 332 │ currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
2026-10-24T19:50:25.1992589Z · ─────────┬───────── ──────┬──────
2026-10-24T19:50:25.1993147Z · │ ╰── 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-24T19:50:25.1993676Z · ╰── 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-24T19:50:25.1993817Z 333 │ setSection("overview");
2026-10-24T19:50:25.1993922Z 334 │ }
2026-10-24T19:50:25.1994065Z 335 │ }, [guidesEnabled, section, insets.top]);
2026-10-24T19:50:25.1994195Z · ──────────────────┬─────────────────
2026-10-24T19:50:25.1994426Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.1994551Z 336 │ const tabContent = activityContent;
2026-10-24T19:50:25.1994753Z ╰────
2026-10-24T19:50:25.1994948Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T19:50:25.1995312Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.1995320Z
2026-10-24T19:50:25.1995562Z ⚠ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T19:50:25.1995765Z ╭─[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:877:6]
2026-10-24T19:50:25.1995876Z 860 │ if (
2026-10-24T19:50:25.1996008Z 861 │ lastSelection.current.path === route.params.path &&
2026-10-24T19:50:25.1996125Z · ──────┬──────
2026-10-24T19:50:25.1996607Z · ╰── Missing dependency `lastSelection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T19:50:25.1996774Z 862 │ lastSelection.current.id === route.params.fileSelectionId
2026-10-24T19:50:25.1996868Z 863 │ )
2026-10-24T19:50:25.1996951Z 864 │ return;
2026-10-24T19:50:25.1997169Z 865 │ lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
2026-10-24T19:50:25.1997332Z 866 │ if (route.params.focus) navigation.setParams({ focus: undefined });
2026-10-24T19:50:25.1997472Z 867 │ setJumpPath(route.params.path);
2026-10-24T19:50:25.1997561Z 868 │ setSelectedRowId(null);
2026-10-24T19:50:25.1997679Z 869 │ jumpStarted.current = false;
2026-10-24T19:50:25.1997970Z 870 │ const file = data.files.find((entry) => entry.path === route.params.path);
2026-10-24T19:50:25.1998112Z 871 │ if (!file || !nativeView.current) return;
2026-10-24T19:50:25.1998225Z · ─────┬────
2026-10-24T19:50:25.1998714Z · ╰── Missing dependency `nativeView`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T19:50:25.1998882Z 872 │ setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
2026-10-24T19:50:25.1998985Z 873 │ jumpStarted.current = true;
2026-10-24T19:50:25.1999153Z 874 │ void nativeView.current.scrollToFile(file.id, false).catch(() => {
2026-10-24T19:50:25.1999277Z 875 │ jumpStarted.current = false;
2026-10-24T19:50:25.1999375Z 876 │ });
2026-10-24T19:50:25.1999605Z 877 │ }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
2026-10-24T19:50:25.1999823Z · ──────────────────────────────────────────────┬──────────────────────────────────────────────
2026-10-24T19:50:25.2000164Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2000350Z 878 │ const appliedFilter = useRef(filter.hideTestFiles);
2026-10-24T19:50:25.2000435Z ╰────
2026-10-24T19:50:25.2000631Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T19:50:25.2000983Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2000987Z
2026-10-24T19:50:25.2001180Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2001438Z ╭─[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T19:50:25.2001653Z 53 │ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T19:50:25.2001845Z 54 │ ╭─▶ children = cloneElement(child, {
2026-10-24T19:50:25.2002014Z 55 │ │ onTouchStart: (event) => {
2026-10-24T19:50:25.2002208Z 56 │ │ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T19:50:25.2002400Z 57 │ │ // finger moves out of the row and back during the same gesture.
2026-10-24T19:50:25.2002553Z 58 │ │ menuPress.current.isPreparing = false;
2026-10-24T19:50:25.2002755Z 59 │ │ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T19:50:25.2002907Z 60 │ │ pendingPress.current = null;
2026-10-24T19:50:25.2003061Z 61 │ │ child.props.onTouchStart?.(event);
2026-10-24T19:50:25.2003171Z 62 │ │ },
2026-10-24T19:50:25.2003291Z 63 │ │ onPress: (event) => {
2026-10-24T19:50:25.2003522Z 64 │ │ // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T19:50:25.2003693Z 65 │ │ // cancellation from a previous physical gesture.
2026-10-24T19:50:25.2003917Z 66 │ │ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T19:50:25.2004128Z 67 │ │ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T19:50:25.2004251Z 68 │ │ return;
2026-10-24T19:50:25.2004371Z 69 │ │ }
2026-10-24T19:50:25.2004644Z 70 │ │ if (isTouch && menuPress.current.isPreparing) {
2026-10-24T19:50:25.2004860Z 71 │ │ // A release can arrive between native menu preparation and display.
2026-10-24T19:50:25.2005037Z 72 │ │ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T19:50:25.2005193Z 73 │ │ event.persist();
2026-10-24T19:50:25.2005387Z 74 │ │ pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T19:50:25.2005511Z 75 │ │ return;
2026-10-24T19:50:25.2005602Z 76 │ │ }
2026-10-24T19:50:25.2005759Z 77 │ │ child.props.onPress?.(event);
2026-10-24T19:50:25.2005875Z 78 │ │ },
2026-10-24T19:50:25.2006041Z 79 │ ├─▶ });
2026-10-24T19:50:25.2006366Z · ╰──── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2006602Z 80 │ menuProps.onMenuInteractionStart = () => {
2026-10-24T19:50:25.2006709Z ╰────
2026-10-24T19:50:25.2007231Z 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-24T19:50:25.2007559Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2007562Z
2026-10-24T19:50:25.2007790Z ⚠ eslint(no-unused-vars): Type 'ThreadRunSummary' is imported but never used.
2026-10-24T19:50:25.2007921Z ╭─[apps/web/src/types.ts:22:3]
2026-10-24T19:50:25.2008137Z 21 │ EnvironmentThreadShell,
2026-10-24T19:50:25.2008242Z 22 │ ThreadRunSummary,
2026-10-24T19:50:25.2008337Z · ────────┬───────
2026-10-24T19:50:25.2008509Z · ╰── 'ThreadRunSummary' is imported here
2026-10-24T19:50:25.2008636Z 23 │ ThreadRuntimeSummary,
2026-10-24T19:50:25.2008722Z ╰────
2026-10-24T19:50:25.2008838Z help: Consider removing this import.
2026-10-24T19:50:25.2008841Z
2026-10-24T19:50:25.2009020Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2009229Z ╭─[apps/mobile/src/features/voice-input/useVoiceInputController.ts:27:14]
2026-10-24T19:50:25.2009356Z 26 │ const latestInput = useRef(input);
2026-10-24T19:50:25.2009448Z 27 │ latestInput.current = input;
2026-10-24T19:50:25.2009601Z · ─────┬─────────┬───
2026-10-24T19:50:25.2009819Z · │ ╰── Cannot update ref value during render
2026-10-24T19:50:25.2009999Z · ╰── This value is a ref
2026-10-24T19:50:25.2010109Z 28 │ const mounted = useRef(true);
2026-10-24T19:50:25.2010177Z ╰────
2026-10-24T19:50:25.2010686Z 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-24T19:50:25.2011036Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2011039Z
2026-10-24T19:50:25.2011406Z ⚠ react(immutability): This value cannot be modified
2026-10-24T19:50:25.2011651Z ╭─[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:93:5]
2026-10-24T19:50:25.2011727Z 90 │ }) {
2026-10-24T19:50:25.2011864Z 91 │ const rotation = useSharedValue(props.hidden ? 1 : 0);
2026-10-24T19:50:25.2011986Z · ────┬───
2026-10-24T19:50:25.2012155Z · ╰── `rotation` originates here
2026-10-24T19:50:25.2012241Z 92 │ useLayoutEffect(() => {
2026-10-24T19:50:25.2012426Z 93 │ rotation.value = withTiming(props.hidden ? 1 : 0, TOOLBAR_FLIP_TIMING);
2026-10-24T19:50:25.2012535Z · ────┬───
2026-10-24T19:50:25.2012714Z · ╰── `rotation` cannot be modified
2026-10-24T19:50:25.2012805Z 94 │ }, [props.hidden, rotation]);
2026-10-24T19:50:25.2012900Z ╰────
2026-10-24T19:50:25.2013200Z 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-24T19:50:25.2013567Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T19:50:25.2013570Z
2026-10-24T19:50:25.2013743Z ⚠ react(immutability): This value cannot be modified
2026-10-24T19:50:25.2013986Z ╭─[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:269:5]
2026-10-24T19:50:25.2014206Z 266 │ const variant = props.variant ?? "plain";
2026-10-24T19:50:25.2014373Z 267 │ const loadingVisibility = useSharedValue(props.loading ? 1 : 0);
2026-10-24T19:50:25.2014484Z · ────────┬────────
2026-10-24T19:50:25.2014678Z · ╰── `loadingVisibility` originates here
2026-10-24T19:50:25.2014783Z 268 │ useLayoutEffect(() => {
2026-10-24T19:50:25.2014968Z 269 │ loadingVisibility.value = withTiming(props.loading ? 1 : 0, DICTATION_TIMING);
2026-10-24T19:50:25.2015105Z · ────────┬────────
2026-10-24T19:50:25.2015271Z · ╰── `loadingVisibility` cannot be modified
2026-10-24T19:50:25.2015401Z 270 │ }, [loadingVisibility, props.loading]);
2026-10-24T19:50:25.2015486Z ╰────
2026-10-24T19:50:25.2015791Z 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-24T19:50:25.2016128Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T19:50:25.2016133Z
2026-10-24T19:50:25.2016326Z ⚠ react(immutability): This value cannot be modified
2026-10-24T19:50:25.2016529Z ╭─[apps/mobile/src/features/voice-input/ComposerDictationControl.tsx:328:5]
2026-10-24T19:50:25.2016609Z 325 │ }) {
2026-10-24T19:50:25.2016792Z 326 │ const recordingVisibility = useSharedValue(props.phase === "recording" ? 1 : 0);
2026-10-24T19:50:25.2016929Z · ─────────┬─────────
2026-10-24T19:50:25.2017117Z · ╰── `recordingVisibility` originates here
2026-10-24T19:50:25.2017325Z 327 │ useLayoutEffect(() => {
2026-10-24T19:50:25.2017550Z 328 │ recordingVisibility.value = withTiming(props.phase === "recording" ? 1 : 0, DICTATION_TIMING);
2026-10-24T19:50:25.2017664Z · ─────────┬─────────
2026-10-24T19:50:25.2017914Z · ╰── `recordingVisibility` cannot be modified
2026-10-24T19:50:25.2018078Z 329 │ }, [props.phase, recordingVisibility]);
2026-10-24T19:50:25.2018158Z ╰────
2026-10-24T19:50:25.2018450Z 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-24T19:50:25.2018801Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T19:50:25.2018804Z
2026-10-24T19:50:25.2018985Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2019184Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:122:38]
2026-10-24T19:50:25.2019385Z 121 │ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T19:50:25.2019536Z 122 │ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T19:50:25.2019692Z · ───────────┬──────────
2026-10-24T19:50:25.2019903Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2020052Z 123 │ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T19:50:25.2020128Z ╰────
2026-10-24T19:50:25.2020647Z 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-24T19:50:25.2021087Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2021094Z
2026-10-24T19:50:25.2021277Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2021478Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:8]
2026-10-24T19:50:25.2021556Z 125 │
2026-10-24T19:50:25.2021700Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2021826Z · ─────────┬────────
2026-10-24T19:50:25.2022002Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2022136Z 127 │ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2022231Z ╰────
2026-10-24T19:50:25.2022748Z 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-24T19:50:25.2023078Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2023081Z
2026-10-24T19:50:25.2023261Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2023444Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:7]
2026-10-24T19:50:25.2023533Z 125 │
2026-10-24T19:50:25.2023677Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2023790Z · ─────────┬─────────
2026-10-24T19:50:25.2023991Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2024291Z 127 │ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2024407Z ╰────
2026-10-24T19:50:25.2024911Z 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-24T19:50:25.2025214Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2025251Z
2026-10-24T19:50:25.2025425Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2025619Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:31]
2026-10-24T19:50:25.2025705Z 125 │
2026-10-24T19:50:25.2025843Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2025988Z · ─────────┬─────────
2026-10-24T19:50:25.2026206Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2026338Z 127 │ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2026423Z ╰────
2026-10-24T19:50:25.2026904Z 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-24T19:50:25.2027256Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2027259Z
2026-10-24T19:50:25.2027444Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2027640Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:126:30]
2026-10-24T19:50:25.2027720Z 125 │
2026-10-24T19:50:25.2027959Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2028116Z · ──────────┬─────────
2026-10-24T19:50:25.2028317Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2028448Z 127 │ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2028512Z ╰────
2026-10-24T19:50:25.2029040Z 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-24T19:50:25.2029371Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2029374Z
2026-10-24T19:50:25.2029550Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2029742Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:127:46]
2026-10-24T19:50:25.2029884Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2030122Z 127 │ ╭─▶ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2030331Z 128 │ │ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T19:50:25.2030552Z 129 │ │ onStatus: (status: RecordingStatus) => {
2026-10-24T19:50:25.2030781Z 130 │ │ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T19:50:25.2030923Z 131 │ │ isFinished: status.isFinished,
2026-10-24T19:50:25.2031142Z 132 │ │ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T19:50:25.2031384Z 133 │ │ error: status.error,
2026-10-24T19:50:25.2031509Z 134 │ │ url: status.url,
2026-10-24T19:50:25.2031619Z 135 │ │ });
2026-10-24T19:50:25.2031740Z 136 │ │ },
2026-10-24T19:50:25.2031975Z 137 │ │ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T19:50:25.2032123Z 138 │ │ selectInput: (inputs) => {
2026-10-24T19:50:25.2032289Z 139 │ │ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T19:50:25.2032491Z 140 │ │ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T19:50:25.2032697Z 141 │ │ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T19:50:25.2032871Z 142 │ │ const order = rememberMicrophones(known, inputs);
2026-10-24T19:50:25.2032991Z 143 │ │ if (order !== known) {
2026-10-24T19:50:25.2033166Z 144 │ │ registry.set(updateMobilePreferencesAtom, {
2026-10-24T19:50:25.2033326Z 145 │ │ transform: (current) => ({
2026-10-24T19:50:25.2033574Z 146 │ │ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T19:50:25.2033696Z 147 │ │ }),
2026-10-24T19:50:25.2033785Z 148 │ │ });
2026-10-24T19:50:25.2033971Z 149 │ │ }
2026-10-24T19:50:25.2034145Z 150 │ │ return preferredMicrophoneInput(inputs, order);
2026-10-24T19:50:25.2034358Z 151 │ │ },
2026-10-24T19:50:25.2034505Z 152 │ ├─▶ });
2026-10-24T19:50:25.2038045Z · ╰──── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2038147Z 153 │ recorderRef.current = recorder;
2026-10-24T19:50:25.2038202Z ╰────
2026-10-24T19:50:25.2038695Z 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-24T19:50:25.2038998Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2039001Z
2026-10-24T19:50:25.2039154Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2039317Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:153:16]
2026-10-24T19:50:25.2039377Z 152 │ });
2026-10-24T19:50:25.2039462Z 153 │ recorderRef.current = recorder;
2026-10-24T19:50:25.2039579Z · ─────┬─────────┬───
2026-10-24T19:50:25.2039843Z · │ ╰── Cannot update ref value during render
2026-10-24T19:50:25.2040008Z · ╰── This value is a ref
2026-10-24T19:50:25.2040117Z 154 │ sessionRef.current = new VoiceInputSession({
2026-10-24T19:50:25.2040171Z ╰────
2026-10-24T19:50:25.2040644Z 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-24T19:50:25.2040943Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2040945Z
2026-10-24T19:50:25.2041100Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2041269Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:48]
2026-10-24T19:50:25.2041356Z 153 │ recorderRef.current = recorder;
2026-10-24T19:50:25.2041554Z 154 │ ╭─▶ sessionRef.current = new VoiceInputSession({
2026-10-24T19:50:25.2041641Z 155 │ │ recorder,
2026-10-24T19:50:25.2041774Z 156 │ │ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T19:50:25.2041893Z 157 │ │ requestPermission: async () => {
2026-10-24T19:50:25.2042059Z 158 │ │ const permission = await requestRecordingPermissionsAsync();
2026-10-24T19:50:25.2042254Z 159 │ │ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T19:50:25.2042341Z 160 │ │ },
2026-10-24T19:50:25.2042489Z 161 │ │ configureRecording: configureVoiceRecordingAudio,
2026-10-24T19:50:25.2042627Z 162 │ │ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T19:50:25.2042764Z 163 │ │ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T19:50:25.2042878Z 164 │ │ onStateChange: (nextState) =>
2026-10-24T19:50:25.2042971Z 165 │ │ setState({
2026-10-24T19:50:25.2043073Z 166 │ │ state: nextState,
2026-10-24T19:50:25.2043213Z 167 │ │ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T19:50:25.2043344Z 168 │ │ label: sessionRef.current?.label ?? null,
2026-10-24T19:50:25.2043431Z 169 │ │ }),
2026-10-24T19:50:25.2043562Z 170 │ ├─▶ });
2026-10-24T19:50:25.2043766Z · ╰──── Cannot access ref value during render
2026-10-24T19:50:25.2043825Z 171 │ }
2026-10-24T19:50:25.2043881Z ╰────
2026-10-24T19:50:25.2044392Z 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-24T19:50:25.2044686Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2044689Z
2026-10-24T19:50:25.2044890Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2045086Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:154:15]
2026-10-24T19:50:25.2045169Z 153 │ recorderRef.current = recorder;
2026-10-24T19:50:25.2045274Z 154 │ sessionRef.current = new VoiceInputSession({
2026-10-24T19:50:25.2045388Z · ─────┬────────┬───
2026-10-24T19:50:25.2045576Z · │ ╰── Cannot update ref value during render
2026-10-24T19:50:25.2045695Z · ╰── This value is a ref
2026-10-24T19:50:25.2045759Z 155 │ recorder,
2026-10-24T19:50:25.2045811Z ╰────
2026-10-24T19:50:25.2046291Z 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-24T19:50:25.2046658Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2046661Z
2026-10-24T19:50:25.2046811Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2046972Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:7]
2026-10-24T19:50:25.2047060Z 184 │ return () => subscription.remove();
2026-10-24T19:50:25.2047128Z 185 │ }, [controller]);
2026-10-24T19:50:25.2047209Z · ─────┬────
2026-10-24T19:50:25.2047356Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2047412Z 186 │
2026-10-24T19:50:25.2047469Z ╰────
2026-10-24T19:50:25.2047947Z 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-24T19:50:25.2048239Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2048241Z
2026-10-24T19:50:25.2048388Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2048548Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:185:6]
2026-10-24T19:50:25.2048635Z 184 │ return () => subscription.remove();
2026-10-24T19:50:25.2048699Z 185 │ }, [controller]);
2026-10-24T19:50:25.2048851Z · ──────┬─────
2026-10-24T19:50:25.2049041Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2049095Z 186 │
2026-10-24T19:50:25.2049146Z ╰────
2026-10-24T19:50:25.2049619Z 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-24T19:50:25.2049910Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2049913Z
2026-10-24T19:50:25.2050057Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2050221Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:6]
2026-10-24T19:50:25.2050280Z 191 │ },
2026-10-24T19:50:25.2050353Z 192 │ [controller, recorder],
2026-10-24T19:50:25.2050429Z · ─────┬────
2026-10-24T19:50:25.2050573Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2050627Z 193 │ );
2026-10-24T19:50:25.2050678Z ╰────
2026-10-24T19:50:25.2051151Z 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-24T19:50:25.2051443Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2051446Z
2026-10-24T19:50:25.2051596Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2051758Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:175:20]
2026-10-24T19:50:25.2051850Z 174 │ const controller = session.controller;
2026-10-24T19:50:25.2051937Z 175 │ const recorder = recorderRef.current;
2026-10-24T19:50:25.2052045Z · ─────────┬─────────
2026-10-24T19:50:25.2052206Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2052261Z 176 │
2026-10-24T19:50:25.2052312Z ╰────
2026-10-24T19:50:25.2052791Z 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-24T19:50:25.2053089Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2053092Z
2026-10-24T19:50:25.2053237Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2053396Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:192:5]
2026-10-24T19:50:25.2053452Z 191 │ },
2026-10-24T19:50:25.2053524Z 192 │ [controller, recorder],
2026-10-24T19:50:25.2053615Z · ───────────┬──────────
2026-10-24T19:50:25.2053766Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2053821Z 193 │ );
2026-10-24T19:50:25.2053874Z ╰────
2026-10-24T19:50:25.2054432Z 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-24T19:50:25.2054765Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2054767Z
2026-10-24T19:50:25.2054912Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2055071Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:20]
2026-10-24T19:50:25.2055160Z 245 │ return () => clearInterval(intervalId);
2026-10-24T19:50:25.2055273Z 246 │ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T19:50:25.2055362Z · ─────┬────
2026-10-24T19:50:25.2055525Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2055582Z 247 │
2026-10-24T19:50:25.2055633Z ╰────
2026-10-24T19:50:25.2056103Z 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-24T19:50:25.2056393Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2056395Z
2026-10-24T19:50:25.2056539Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2056699Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:246:6]
2026-10-24T19:50:25.2056792Z 245 │ return () => clearInterval(intervalId);
2026-10-24T19:50:25.2056901Z 246 │ }, [audioLevels, controller, recorder, state.phase]);
2026-10-24T19:50:25.2057034Z · ────────────────────────┬───────────────────────
2026-10-24T19:50:25.2057196Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2057249Z 247 │
2026-10-24T19:50:25.2057301Z ╰────
2026-10-24T19:50:25.2057777Z 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-24T19:50:25.2058076Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2058083Z
2026-10-24T19:50:25.2058226Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2058385Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:261:5]
2026-10-24T19:50:25.2058455Z 260 │ setOwnerFocused,
2026-10-24T19:50:25.2058516Z 261 │ session,
2026-10-24T19:50:25.2058587Z · ───┬───
2026-10-24T19:50:25.2058729Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2058788Z 262 │ stop,
2026-10-24T19:50:25.2058838Z ╰────
2026-10-24T19:50:25.2059386Z 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-24T19:50:25.2059721Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2059723Z
2026-10-24T19:50:25.2059867Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2060026Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:251:10]
2026-10-24T19:50:25.2060080Z 250 │
2026-10-24T19:50:25.2060221Z 251 │ ╭─▶ return {
2026-10-24T19:50:25.2060435Z 252 │ │ isAvailable: getLocalVoiceTranscriber() !== null || getNativeShowcaseScene() !== null,
2026-10-24T19:50:25.2060514Z 253 │ │ state,
2026-10-24T19:50:25.2060606Z 254 │ │ audioLevels,
2026-10-24T19:50:25.2060704Z 255 │ │ elapsedSeconds,
2026-10-24T19:50:25.2060835Z 256 │ │ isBusy: voiceInputBlocksSubmission(state),
2026-10-24T19:50:25.2060917Z 257 │ │ ownerKey,
2026-10-24T19:50:25.2060992Z 258 │ │ label,
2026-10-24T19:50:25.2061082Z 259 │ │ focusedOwners,
2026-10-24T19:50:25.2061178Z 260 │ │ setOwnerFocused,
2026-10-24T19:50:25.2061258Z 261 │ │ session,
2026-10-24T19:50:25.2061333Z 262 │ │ stop,
2026-10-24T19:50:25.2061413Z 263 │ │ cancel,
2026-10-24T19:50:25.2061541Z 264 │ ├─▶ };
2026-10-24T19:50:25.2061752Z · ╰──── Cannot access ref value during render
2026-10-24T19:50:25.2061809Z 265 │ }
2026-10-24T19:50:25.2061862Z ╰────
2026-10-24T19:50:25.2062339Z 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-24T19:50:25.2062634Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2062637Z
2026-10-24T19:50:25.2062795Z ⚠ react(immutability): This value cannot be modified
2026-10-24T19:50:25.2062953Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T19:50:25.2063119Z 121 │ const audioLevelsRef = useRef(Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0));
2026-10-24T19:50:25.2063248Z 122 │ const audioLevels = useSharedValue(audioLevelsRef.current);
2026-10-24T19:50:25.2063329Z · ─────┬─────
2026-10-24T19:50:25.2063466Z · ╰── `audioLevels` originates here
2026-10-24T19:50:25.2063586Z 123 │ const sessionRef = useRef<VoiceInputSession | null>(null);
2026-10-24T19:50:25.2063733Z 124 │ const recorderRef = useRef<LazyVoiceRecorder<RecorderState> | null>(null);
2026-10-24T19:50:25.2063786Z 125 │
2026-10-24T19:50:25.2063920Z 126 │ if (!sessionRef.current || !recorderRef.current) {
2026-10-24T19:50:25.2064021Z 127 │ const recorder = createLazyVoiceRecorder({
2026-10-24T19:50:25.2064161Z 128 │ create: () => new AudioModule.AudioRecorder(VOICE_RECORDING_OPTIONS),
2026-10-24T19:50:25.2064315Z 129 │ onStatus: (status: RecordingStatus) => {
2026-10-24T19:50:25.2064473Z 130 │ sessionRef.current?.controller.handleRecorderStatus({
2026-10-24T19:50:25.2064560Z 131 │ isFinished: status.isFinished,
2026-10-24T19:50:25.2064705Z 132 │ hasError: status.hasError || status.mediaServicesDidReset === true,
2026-10-24T19:50:25.2064779Z 133 │ error: status.error,
2026-10-24T19:50:25.2064847Z 134 │ url: status.url,
2026-10-24T19:50:25.2064906Z 135 │ });
2026-10-24T19:50:25.2064963Z 136 │ },
2026-10-24T19:50:25.2065130Z 137 │ // Read when recording starts so preference changes do not re-render every composer.
2026-10-24T19:50:25.2065207Z 138 │ selectInput: (inputs) => {
2026-10-24T19:50:25.2065332Z 139 │ const preferences = registry.get(mobilePreferencesAtom);
2026-10-24T19:50:25.2065445Z 140 │ if (!AsyncResult.isSuccess(preferences)) return null;
2026-10-24T19:50:25.2065584Z 141 │ const known = microphoneOrder(preferences.value.microphones);
2026-10-24T19:50:25.2065699Z 142 │ const order = rememberMicrophones(known, inputs);
2026-10-24T19:50:25.2065773Z 143 │ if (order !== known) {
2026-10-24T19:50:25.2065880Z 144 │ registry.set(updateMobilePreferencesAtom, {
2026-10-24T19:50:25.2065962Z 145 │ transform: (current) => ({
2026-10-24T19:50:25.2066134Z 146 │ microphones: rememberMicrophones(microphoneOrder(current.microphones), inputs),
2026-10-24T19:50:25.2066196Z 147 │ }),
2026-10-24T19:50:25.2066257Z 148 │ });
2026-10-24T19:50:25.2066314Z 149 │ }
2026-10-24T19:50:25.2066423Z 150 │ return preferredMicrophoneInput(inputs, order);
2026-10-24T19:50:25.2066481Z 151 │ },
2026-10-24T19:50:25.2066536Z 152 │ });
2026-10-24T19:50:25.2066623Z 153 │ recorderRef.current = recorder;
2026-10-24T19:50:25.2066728Z 154 │ sessionRef.current = new VoiceInputSession({
2026-10-24T19:50:25.2066790Z 155 │ recorder,
2026-10-24T19:50:25.2066889Z 156 │ getTranscriber: getLocalVoiceTranscriber,
2026-10-24T19:50:25.2066974Z 157 │ requestPermission: async () => {
2026-10-24T19:50:25.2067104Z 158 │ const permission = await requestRecordingPermissionsAsync();
2026-10-24T19:50:25.2067261Z 159 │ return { granted: permission.granted, canAskAgain: permission.canAskAgain };
2026-10-24T19:50:25.2067318Z 160 │ },
2026-10-24T19:50:25.2067426Z 161 │ configureRecording: configureVoiceRecordingAudio,
2026-10-24T19:50:25.2067532Z 162 │ releaseRecording: releaseVoiceRecordingAudio,
2026-10-24T19:50:25.2067634Z 163 │ deleteRecording: (uri) => new File(uri).delete(),
2026-10-24T19:50:25.2067719Z 164 │ onStateChange: (nextState) =>
2026-10-24T19:50:25.2067784Z 165 │ setState({
2026-10-24T19:50:25.2067855Z 166 │ state: nextState,
2026-10-24T19:50:25.2067962Z 167 │ ownerKey: sessionRef.current?.ownerKey ?? null,
2026-10-24T19:50:25.2068061Z 168 │ label: sessionRef.current?.label ?? null,
2026-10-24T19:50:25.2068118Z 169 │ }),
2026-10-24T19:50:25.2068175Z 170 │ });
2026-10-24T19:50:25.2068230Z 171 │ }
2026-10-24T19:50:25.2068282Z 172 │
2026-10-24T19:50:25.2068365Z 173 │ const session = sessionRef.current;
2026-10-24T19:50:25.2068454Z 174 │ const controller = session.controller;
2026-10-24T19:50:25.2068538Z 175 │ const recorder = recorderRef.current;
2026-10-24T19:50:25.2068592Z 176 │
2026-10-24T19:50:25.2068656Z 177 │ useEffect(() => {
2026-10-24T19:50:25.2068867Z 178 │ const subscription = AppState.addEventListener("change", (nextState) => {
2026-10-24T19:50:25.2069041Z 179 │ // iOS reports `inactive` while its permission dialog is open. Only the
2026-10-24T19:50:25.2069181Z 180 │ // real background state cancels preparation; recorder status handles
2026-10-24T19:50:25.2069285Z 181 │ // calls and route interruptions during capture.
2026-10-24T19:50:25.2069421Z 182 │ if (nextState === "background") controller.appMovedToBackground();
2026-10-24T19:50:25.2069476Z 183 │ });
2026-10-24T19:50:25.2069561Z 184 │ return () => subscription.remove();
2026-10-24T19:50:25.2069625Z 185 │ }, [controller]);
2026-10-24T19:50:25.2069677Z 186 │
2026-10-24T19:50:25.2069738Z 187 │ useEffect(
2026-10-24T19:50:25.2069798Z 188 │ () => () => {
2026-10-24T19:50:25.2069872Z 189 │ controller.dispose();
2026-10-24T19:50:25.2069940Z 190 │ recorder.release();
2026-10-24T19:50:25.2069995Z 191 │ },
2026-10-24T19:50:25.2070069Z 192 │ [controller, recorder],
2026-10-24T19:50:25.2070127Z 193 │ );
2026-10-24T19:50:25.2070179Z 194 │
2026-10-24T19:50:25.2070243Z 195 │ useEffect(() => {
2026-10-24T19:50:25.2070334Z 196 │ if (state.phase !== "recording") return;
2026-10-24T19:50:25.2070386Z 197 │
2026-10-24T19:50:25.2070535Z 198 │ const tag = `voice-input:${keepAwakeId}:${++keepAwakeSessionRef.current}`;
2026-10-24T19:50:25.2070640Z 199 │ const activation = activateKeepAwakeAsync(tag);
2026-10-24T19:50:25.2070720Z 200 │ void activation.catch(() => {});
2026-10-24T19:50:25.2070784Z 201 │ return () => {
2026-10-24T19:50:25.2070934Z 202 │ // Release after activation settles, even if the recording ends immediately.
2026-10-24T19:50:25.2071074Z 203 │ void activation.then(() => deactivateKeepAwake(tag)).catch(() => {});
2026-10-24T19:50:25.2071128Z 204 │ };
2026-10-24T19:50:25.2071212Z 205 │ }, [keepAwakeId, state.phase]);
2026-10-24T19:50:25.2071267Z 206 │
2026-10-24T19:50:25.2071329Z 207 │ useEffect(() => {
2026-10-24T19:50:25.2071463Z 208 │ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T19:50:25.2071514Z 209 │
2026-10-24T19:50:25.2071635Z 210 │ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T19:50:25.2071789Z 211 │ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T19:50:25.2071893Z 212 │ audioLevels.value = audioLevelsRef.current;
2026-10-24T19:50:25.2071972Z · ─────┬─────
2026-10-24T19:50:25.2072119Z · ╰── `audioLevels` cannot be modified
2026-10-24T19:50:25.2072173Z 213 │ }
2026-10-24T19:50:25.2072226Z ╰────
2026-10-24T19:50:25.2072505Z 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-24T19:50:25.2072823Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T19:50:25.2072826Z
2026-10-24T19:50:25.2073030Z ⚠ react(immutability): Cannot modify local variables after render completes
2026-10-24T19:50:25.2073189Z ╭─[apps/mobile/src/features/voice-input/VoiceInputProvider.tsx:212:7]
2026-10-24T19:50:25.2073242Z 206 │
2026-10-24T19:50:25.2073306Z 207 │ useEffect(() => {
2026-10-24T19:50:25.2073383Z · ───┬───
2026-10-24T19:50:25.2073666Z · ╰── This function may (indirectly) reassign or modify `audioLevels` after render
2026-10-24T19:50:25.2073836Z 208 │ if (state.phase !== "preparing" && state.phase !== "recording") return;
2026-10-24T19:50:25.2073887Z 209 │
2026-10-24T19:50:25.2074031Z 210 │ if (audioLevelsRef.current.some((level) => level !== 0)) {
2026-10-24T19:50:25.2074183Z 211 │ audioLevelsRef.current = Array<number>(VOICE_WAVEFORM_SAMPLE_COUNT).fill(0);
2026-10-24T19:50:25.2074286Z 212 │ audioLevels.value = audioLevelsRef.current;
2026-10-24T19:50:25.2074362Z · ─────┬─────
2026-10-24T19:50:25.2074496Z · ╰── This modifies `audioLevels`
2026-10-24T19:50:25.2074550Z 213 │ }
2026-10-24T19:50:25.2074602Z ╰────
2026-10-24T19:50:25.2074947Z help: This argument is a function which may reassign or mutate `audioLevels` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T19:50:25.2075261Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T19:50:25.2075268Z
2026-10-24T19:50:25.2075613Z ⚠ 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-24T19:50:25.2075762Z ╭─[packages/effect-codex-app-server/src/schema.test.ts:50:18]
2026-10-24T19:50:25.2075924Z 49 │ for (const tool of ["sendMessage", "followupTask", "interruptAgent", "listAgents"]) {
2026-10-24T19:50:25.2076098Z 50 │ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-24T19:50:25.2076183Z · ─────────
2026-10-24T19:50:25.2076369Z 51 │ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-24T19:50:25.2076426Z ╰────
2026-10-24T19:50:25.2076429Z
2026-10-24T19:50:25.2076767Z ⚠ 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-24T19:50:25.2076913Z ╭─[packages/effect-codex-app-server/src/schema.test.ts:51:18]
2026-10-24T19:50:25.2077080Z 50 │ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
2026-10-24T19:50:25.2077258Z 51 │ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
2026-10-24T19:50:25.2077341Z · ─────────
2026-10-24T19:50:25.2077394Z 52 │ }
2026-10-24T19:50:25.2077445Z ╰────
2026-10-24T19:50:25.2077447Z
2026-10-24T19:50:25.2077850Z ⚠ 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-24T19:50:25.2078030Z ╭─[packages/effect-codex-app-server/src/schema.test.ts:55:5]
2026-10-24T19:50:25.2078094Z 54 │ assert.equal(
2026-10-24T19:50:25.2078269Z 55 │ Schema.is(CodexSchema.ServerNotification__CollabAgentToolCallStatus)("interrupted"),
2026-10-24T19:50:25.2078339Z · ─────────
2026-10-24T19:50:25.2078395Z 56 │ true,
2026-10-24T19:50:25.2078445Z ╰────
2026-10-24T19:50:25.2078448Z
2026-10-24T19:50:25.2078785Z ⚠ 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-24T19:50:25.2078926Z ╭─[packages/effect-codex-app-server/src/schema.test.ts:59:5]
2026-10-24T19:50:25.2078993Z 58 │ assert.equal(
2026-10-24T19:50:25.2079183Z 59 │ Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentToolCallStatus)("interrupted"),
2026-10-24T19:50:25.2079255Z · ─────────
2026-10-24T19:50:25.2079311Z 60 │ true,
2026-10-24T19:50:25.2079362Z ╰────
2026-10-24T19:50:25.2079364Z
2026-10-24T19:50:25.2079699Z ⚠ 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-24T19:50:25.2079849Z ╭─[packages/effect-codex-app-server/src/schema.test.ts:103:16]
2026-10-24T19:50:25.2079901Z 102 │
2026-10-24T19:50:25.2080068Z 103 │ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse)(resumeResponse), true);
2026-10-24T19:50:25.2080152Z · ─────────
2026-10-24T19:50:25.2080212Z 104 │ });
2026-10-24T19:50:25.2080265Z ╰────
2026-10-24T19:50:25.2080268Z
2026-10-24T19:50:25.2080749Z ⚠ 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-24T19:50:25.2080872Z ╭─[packages/shared/src/atomicWrite.test.ts:139:5]
2026-10-24T19:50:25.2080947Z 138 │ Effect.gen(function* () {
2026-10-24T19:50:25.2081143Z 139 │ ╭─▶ while (fiber.pollUnsafe() === undefined) {
2026-10-24T19:50:25.2081268Z 140 │ │ yield* TestClock.adjust("100 millis");
2026-10-24T19:50:25.2081602Z 141 │ │ // oxlint-disable-next-line t3code/no-real-time-wait-in-tests -- a macrotask boundary so the real stat I/O can finish; time moves only via TestClock
2026-10-24T19:50:25.2081794Z 142 │ │ yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
2026-10-24T19:50:25.2081924Z 143 │ ╰─▶ }
2026-10-24T19:50:25.2082008Z 144 │ return yield* Fiber.join(fiber);
2026-10-24T19:50:25.2082060Z ╰────
2026-10-24T19:50:25.2082063Z
2026-10-24T19:50:25.2082351Z ⚠ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
2026-10-24T19:50:25.2082485Z ╭─[apps/server/src/provider/AntigravityAuth.ts:285:20]
2026-10-24T19:50:25.2082540Z 284 │ },
2026-10-24T19:50:25.2082621Z 285 │ (effect, flow, stopSessions) =>
2026-10-24T19:50:25.2082766Z · ──────┬─────
2026-10-24T19:50:25.2082952Z · ╰── 'stopSessions' is declared here
2026-10-24T19:50:25.2083017Z 286 │ effect.pipe(
2026-10-24T19:50:25.2083068Z ╰────
2026-10-24T19:50:25.2083170Z help: Consider removing this parameter.
2026-10-24T19:50:25.2083173Z
2026-10-24T19:50:25.2083381Z ⚠ eslint(no-unused-vars): Function 'nonEmptyString' is declared but never used.
2026-10-24T19:50:25.2083529Z ╭─[packages/client-runtime/src/work-log/presentation.ts:237:10]
2026-10-24T19:50:25.2083584Z 236 │
2026-10-24T19:50:25.2083701Z 237 │ function nonEmptyString(value: unknown): string | null {
2026-10-24T19:50:25.2083785Z · ───────┬──────
2026-10-24T19:50:25.2083966Z · ╰── 'nonEmptyString' is declared here
2026-10-24T19:50:25.2084117Z 238 │ return typeof value === "string" && value.trim().length > 0 ? value : null;
2026-10-24T19:50:25.2084172Z ╰────
2026-10-24T19:50:25.2084278Z help: Consider removing this declaration.
2026-10-24T19:50:25.2084281Z
2026-10-24T19:50:25.2084424Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2084576Z ╭─[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T19:50:25.2084758Z 151 │ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T19:50:25.2084836Z 152 │ {props.children(open)}
2026-10-24T19:50:25.2084925Z · ──┬─
2026-10-24T19:50:25.2085084Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2085151Z 153 │ </View>
2026-10-24T19:50:25.2085205Z ╰────
2026-10-24T19:50:25.2085685Z 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-24T19:50:25.2085984Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2085986Z
2026-10-24T19:50:25.2086187Z ⚠ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T19:50:25.2086337Z ╭─[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T19:50:25.2086481Z 139 │ if (action.id !== undefined) {
2026-10-24T19:50:25.2086563Z 140 │ props.onPressAction?.({
2026-10-24T19:50:25.2086638Z · ──┬──
2026-10-24T19:50:25.2086770Z · ╰── Missing dependency `props`
2026-10-24T19:50:25.2086863Z 141 │ nativeEvent: { event: action.id },
2026-10-24T19:50:25.2087009Z 142 │ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T19:50:25.2087065Z 143 │ }
2026-10-24T19:50:25.2087121Z 144 │ },
2026-10-24T19:50:25.2087202Z 145 │ [close, props.onPressAction],
2026-10-24T19:50:25.2087295Z · ─────────┬─────────
2026-10-24T19:50:25.2087512Z · ╰── Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T19:50:25.2087567Z 146 │ );
2026-10-24T19:50:25.2087619Z ╰────
2026-10-24T19:50:25.2088184Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI. Extra dependencies can cause a value to update more often than it should, resulting in performance problems such as excessive renders or effects firing too often
2026-10-24T19:50:25.2088550Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2088552Z
2026-10-24T19:50:25.2088931Z ⚠ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownOption(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
2026-10-24T19:50:25.2089055Z ╭─[packages/shared/src/otelEnvironment.ts:146:14]
2026-10-24T19:50:25.2089114Z 145 │ name,
2026-10-24T19:50:25.2089257Z 146 │ (raw) => Schema.decodeUnknownOption(OtlpProtocol)(raw.toLowerCase()),
2026-10-24T19:50:25.2089368Z · ──────────────────────────
2026-10-24T19:50:25.2089490Z 147 │ `${name} is not http/protobuf or http/json, ${NOT_EXPORTED}`,
2026-10-24T19:50:25.2089542Z ╰────
2026-10-24T19:50:25.2089545Z
2026-10-24T19:50:25.2089805Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.2089937Z ╭─[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
2026-10-24T19:50:25.2090045Z 83 │ const [nowMs, setNowMs] = useState(() => Date.now());
2026-10-24T19:50:25.2090110Z 84 │ useEffect(() => {
2026-10-24T19:50:25.2090180Z · ────┬────
2026-10-24T19:50:25.2090311Z · ╰── This is the containing effect
2026-10-24T19:50:25.2090408Z 85 │ if (!actionState.isRunning) return;
2026-10-24T19:50:25.2090482Z 86 │ setNowMs(Date.now());
2026-10-24T19:50:25.2090552Z · ────┬───
2026-10-24T19:50:25.2090720Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.2090847Z 87 │ const interval = setInterval(() => setNowMs(Date.now()), 1000);
2026-10-24T19:50:25.2090898Z ╰────
2026-10-24T19:50:25.2091513Z 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-24T19:50:25.2091846Z 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-24T19:50:25.2091851Z
2026-10-24T19:50:25.2092060Z ⚠ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T19:50:25.2092195Z ╭─[packages/client-runtime/src/state/usageAccess.ts:3:8]
2026-10-24T19:50:25.2092269Z 2 │ AuthDiagnosticsReadScope,
2026-10-24T19:50:25.2092338Z 3 │ type AuthSessionState,
2026-10-24T19:50:25.2092421Z · ────────┬───────
2026-10-24T19:50:25.2092569Z · ╰── 'AuthSessionState' is imported here
2026-10-24T19:50:25.2092638Z 4 │ sessionGrantsScope,
2026-10-24T19:50:25.2092689Z ╰────
2026-10-24T19:50:25.2092787Z help: Consider removing this import.
2026-10-24T19:50:25.2092789Z
2026-10-24T19:50:25.2093081Z ⚠ eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
2026-10-24T19:50:25.2093249Z ╭─[packages/shared/src/serverSettings.test.ts:35:7]
2026-10-24T19:50:25.2093432Z 34 │ const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
2026-10-24T19:50:25.2093527Z 35 │ instanceId === configured ? true : false,
2026-10-24T19:50:25.2093644Z · ────────────────────────────────────────
2026-10-24T19:50:25.2093700Z 36 │ );
2026-10-24T19:50:25.2093750Z ╰────
2026-10-24T19:50:25.2093844Z help: Remove this ternary operator
2026-10-24T19:50:25.2093847Z
2026-10-24T19:50:25.2094070Z ⚠ eslint(no-unused-vars): Identifier 'Arr' is imported but never used.
2026-10-24T19:50:25.2094201Z ╭─[packages/client-runtime/src/state/threadSort.ts:4:13]
2026-10-24T19:50:25.2094324Z 3 │ import type { EnvironmentThreadShell } from "./models.ts";
2026-10-24T19:50:25.2094408Z 4 │ import * as Arr from "effect/Array";
2026-10-24T19:50:25.2094481Z · ─┬─
2026-10-24T19:50:25.2094605Z · ╰── 'Arr' is imported here
2026-10-24T19:50:25.2094687Z 5 │ import * as Order from "effect/Order";
2026-10-24T19:50:25.2094738Z ╰────
2026-10-24T19:50:25.2094834Z help: Consider removing this import.
2026-10-24T19:50:25.2094836Z
2026-10-24T19:50:25.2095030Z ⚠ eslint(no-unused-vars): Identifier 'Order' is imported but never used.
2026-10-24T19:50:25.2095159Z ╭─[packages/client-runtime/src/state/threadSort.ts:5:13]
2026-10-24T19:50:25.2095236Z 4 │ import * as Arr from "effect/Array";
2026-10-24T19:50:25.2095317Z 5 │ import * as Order from "effect/Order";
2026-10-24T19:50:25.2095399Z · ──┬──
2026-10-24T19:50:25.2095532Z · ╰── 'Order' is imported here
2026-10-24T19:50:25.2095582Z 6 │
2026-10-24T19:50:25.2095633Z ╰────
2026-10-24T19:50:25.2095729Z help: Consider removing this import.
2026-10-24T19:50:25.2095731Z
2026-10-24T19:50:25.2096010Z ⚠ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2096155Z ╭─[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-24T19:50:25.2096209Z 60 │ ) {
2026-10-24T19:50:25.2096379Z 61 │ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-24T19:50:25.2096460Z · ──────┬──────
2026-10-24T19:50:25.2096606Z · ╰── 'useDragRegion' is declared here
2026-10-24T19:50:25.2096702Z 62 │ const isInline = props.mode === "inline";
2026-10-24T19:50:25.2096753Z ╰────
2026-10-24T19:50:25.2096858Z help: Consider removing this declaration.
2026-10-24T19:50:25.2096860Z
2026-10-24T19:50:25.2097347Z ⚠ 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-24T19:50:25.2097504Z ╭─[packages/client-runtime/src/state/threads-sync.test.ts:1680:7]
2026-10-24T19:50:25.2097598Z 1679 │ yield* harness.replaceSession;
2026-10-24T19:50:25.2097810Z 1680 │ ╭─▶ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T19:50:25.2098024Z 1681 │ │ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) {
2026-10-24T19:50:25.2098149Z 1682 │ │ break;
2026-10-24T19:50:25.2098228Z 1683 │ │ }
2026-10-24T19:50:25.2098337Z 1684 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2098470Z 1685 │ ╰─▶ }
2026-10-24T19:50:25.2098546Z 1686 │ yield* Queue.offer(
2026-10-24T19:50:25.2098598Z ╰────
2026-10-24T19:50:25.2098601Z
2026-10-24T19:50:25.2099078Z ⚠ 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-24T19:50:25.2099238Z ╭─[packages/client-runtime/src/state/threads-sync.test.ts:1789:7]
2026-10-24T19:50:25.2099329Z 1788 │ yield* harness.replaceSession;
2026-10-24T19:50:25.2099540Z 1789 │ ╭─▶ for (let attempt = 0; attempt < 100; attempt += 1) {
2026-10-24T19:50:25.2099700Z 1790 │ │ if ((yield* Ref.get(harness.subscriptionCount)) >= 2) break;
2026-10-24T19:50:25.2099807Z 1791 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2099939Z 1792 │ ╰─▶ }
2026-10-24T19:50:25.2100070Z 1793 │ expect(yield* Ref.get(harness.subscriptionCount)).toBe(2);
2026-10-24T19:50:25.2100123Z ╰────
2026-10-24T19:50:25.2100126Z
2026-10-24T19:50:25.2100313Z ⚠ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T19:50:25.2100425Z ╭─[packages/shared/src/qrCode.ts:458:44]
2026-10-24T19:50:25.2100496Z 457 │ ): Array<byte> {
2026-10-24T19:50:25.2100602Z 458 │ let result: Array<byte> = divisor.map((_) => 0);
2026-10-24T19:50:25.2100703Z · ┬
2026-10-24T19:50:25.2100849Z · ╰── '_' is declared here
2026-10-24T19:50:25.2100922Z 459 │ for (const b of data) {
2026-10-24T19:50:25.2100975Z ╰────
2026-10-24T19:50:25.2101077Z help: Consider removing this parameter.
2026-10-24T19:50:25.2101080Z
2026-10-24T19:50:25.2101303Z ⚠ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T19:50:25.2101440Z ╭─[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
2026-10-24T19:50:25.2101572Z 1021 │ instanceId,
2026-10-24T19:50:25.2101748Z 1022 │ { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
2026-10-24T19:50:25.2101890Z · ──────────────────────────────────────────────────
2026-10-24T19:50:25.2101950Z 1023 │ ]),
2026-10-24T19:50:25.2102001Z ╰────
2026-10-24T19:50:25.2102273Z 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-24T19:50:25.2102276Z
2026-10-24T19:50:25.2102458Z ⚠ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T19:50:25.2102643Z ╭─[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-24T19:50:25.2102713Z 115 │ return [...commands];
2026-10-24T19:50:25.2102854Z 116 │ }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-24T19:50:25.2102976Z · ─────────┬─────────
2026-10-24T19:50:25.2103162Z · ╰── Unnecessary dependency `registrationVersion`
2026-10-24T19:50:25.2103216Z 117 │
2026-10-24T19:50:25.2103268Z ╰────
2026-10-24T19:50:25.2103588Z 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-24T19:50:25.2103933Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2103938Z
2026-10-24T19:50:25.2104165Z ⚠ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
2026-10-24T19:50:25.2104306Z ╭─[apps/mobile/src/state/use-model-option-memory.ts:21:7]
2026-10-24T19:50:25.2104371Z 20 │ [instanceId]: {
2026-10-24T19:50:25.2104451Z 21 │ ...(state[instanceId] ?? {}),
2026-10-24T19:50:25.2104552Z · ────────────────────────────
2026-10-24T19:50:25.2104618Z 22 │ [model]: options,
2026-10-24T19:50:25.2104670Z ╰────
2026-10-24T19:50:25.2104938Z 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-24T19:50:25.2104942Z
2026-10-24T19:50:25.2105143Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.2105285Z ╭─[apps/mobile/src/state/use-thread-outbox-drain.ts:1321:5]
2026-10-24T19:50:25.2105370Z 1320 │ queuedMessagesByThreadKey,
2026-10-24T19:50:25.2105436Z 1321 │ retryTick,
2026-10-24T19:50:25.2105511Z · ────┬────
2026-10-24T19:50:25.2105656Z · ╰── Unnecessary dependency `retryTick`
2026-10-24T19:50:25.2105728Z 1322 │ restoreQueuedMessage,
2026-10-24T19:50:25.2105779Z ╰────
2026-10-24T19:50:25.2106079Z 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-24T19:50:25.2106399Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2106402Z
2026-10-24T19:50:25.2106764Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.2106979Z ╭─[apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx:114:33]
2026-10-24T19:50:25.2107077Z 113 │ return () => cancelAnimationFrame(frame);
2026-10-24T19:50:25.2107178Z 114 │ }, [restoreSearch, tabActive, bottomSearch]);
2026-10-24T19:50:25.2107282Z · ──────┬─────
2026-10-24T19:50:25.2107453Z · ╰── Unnecessary dependency `bottomSearch`
2026-10-24T19:50:25.2107558Z 115 │ const composeButton = nativeToolbarCompose ? (
2026-10-24T19:50:25.2107609Z ╰────
2026-10-24T19:50:25.2107903Z 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-24T19:50:25.2108227Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2108232Z
2026-10-24T19:50:25.2108704Z ⚠ 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-24T19:50:25.2108829Z ╭─[packages/effect-acp/src/protocol.test.ts:500:31]
2026-10-24T19:50:25.2108882Z 499 │
2026-10-24T19:50:25.2108997Z 500 │ const response = yield* Schema.decodeUnknownEffect(
2026-10-24T19:50:25.2109118Z · ──────────────────────────
2026-10-24T19:50:25.2109226Z 501 │ Schema.fromJsonString(JsonRpcErrorResponse),
2026-10-24T19:50:25.2109278Z ╰────
2026-10-24T19:50:25.2109280Z
2026-10-24T19:50:25.2109505Z ⚠ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T19:50:25.2109642Z ╭─[apps/web/src/lib/composerContextReferences.ts:90:40]
2026-10-24T19:50:25.2109716Z 89 │ let cursor = prompt.length;
2026-10-24T19:50:25.2109821Z 90 │ for (const occurrence of occurrences.reverse()) {
2026-10-24T19:50:25.2109926Z · ───────
2026-10-24T19:50:25.2110007Z 91 │ let { start, end } = occurrence;
2026-10-24T19:50:25.2110057Z ╰────
2026-10-24T19:50:25.2110322Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T19:50:25.2110325Z
2026-10-24T19:50:25.2110543Z ⚠ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T19:50:25.2110671Z ╭─[apps/web/src/lib/announce.browser.test.ts:41:46]
2026-10-24T19:50:25.2110725Z 40 │
2026-10-24T19:50:25.2110846Z 41 │ expect(regionTexts()).toEqual([...first].reverse());
2026-10-24T19:50:25.2110954Z · ───────
2026-10-24T19:50:25.2111049Z 42 │ expect(regionTexts()).toContain("Claude");
2026-10-24T19:50:25.2111101Z ╰────
2026-10-24T19:50:25.2111361Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T19:50:25.2111363Z
2026-10-24T19:50:25.2111888Z ⚠ 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-24T19:50:25.2112051Z ╭─[packages/effect-acp/src/errors.test.ts:129:28]
2026-10-24T19:50:25.2112144Z 128 │ const secret = "acp-summary-secret";
2026-10-24T19:50:25.2112252Z 129 │ const cause = yield* Schema.decodeUnknownEffect(
2026-10-24T19:50:25.2112371Z · ──────────────────────────
2026-10-24T19:50:25.2112440Z 130 │ Schema.Struct({
2026-10-24T19:50:25.2112492Z ╰────
2026-10-24T19:50:25.2112495Z
2026-10-24T19:50:25.2112873Z ⚠ 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-24T19:50:25.2112990Z ╭─[packages/effect-acp/src/client.ts:1269:11]
2026-10-24T19:50:25.2113148Z 1268 │ extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
2026-10-24T19:50:25.2113327Z 1269 │ Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
2026-10-24T19:50:25.2113432Z · ──────────────────────────
2026-10-24T19:50:25.2113577Z 1270 │ Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
2026-10-24T19:50:25.2113630Z ╰────
2026-10-24T19:50:25.2113633Z
2026-10-24T19:50:25.2114013Z ⚠ 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-24T19:50:25.2114132Z ╭─[packages/effect-acp/src/schema.test.ts:18:12]
2026-10-24T19:50:25.2114294Z 17 │ const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
2026-10-24T19:50:25.2114417Z 18 │ expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
2026-10-24T19:50:25.2114503Z · ─────────
2026-10-24T19:50:25.2114567Z 19 │ expect(
2026-10-24T19:50:25.2114617Z ╰────
2026-10-24T19:50:25.2114619Z
2026-10-24T19:50:25.2114957Z ⚠ 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-24T19:50:25.2115075Z ╭─[packages/effect-acp/src/schema.test.ts:20:7]
2026-10-24T19:50:25.2115135Z 19 │ expect(
2026-10-24T19:50:25.2115306Z 20 │ Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
2026-10-24T19:50:25.2115379Z · ─────────
2026-10-24T19:50:25.2115443Z 21 │ ).toBe(true);
2026-10-24T19:50:25.2115494Z ╰────
2026-10-24T19:50:25.2115496Z
2026-10-24T19:50:25.2115753Z ⚠ eslint(no-unused-vars): Function 'normalizeTerminalContextSelection' is declared but never used.
2026-10-24T19:50:25.2115869Z ╭─[apps/web/src/lib/terminalContext.ts:56:10]
2026-10-24T19:50:25.2115922Z 55 │
2026-10-24T19:50:25.2116022Z 56 │ function normalizeTerminalContextSelection(
2026-10-24T19:50:25.2116132Z · ────────────────┬────────────────
2026-10-24T19:50:25.2116325Z · ╰── 'normalizeTerminalContextSelection' is declared here
2026-10-24T19:50:25.2116413Z 57 │ selection: TerminalContextSelection,
2026-10-24T19:50:25.2116466Z ╰────
2026-10-24T19:50:25.2116570Z help: Consider removing this declaration.
2026-10-24T19:50:25.2116573Z
2026-10-24T19:50:25.2116833Z ⚠ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2117024Z ╭─[packages/provider-grok/src/server/adapter.ts:408:7]
2026-10-24T19:50:25.2117111Z 407 │
2026-10-24T19:50:25.2117181Z 408 │ const layer: Layer.Layer<
2026-10-24T19:50:25.2117249Z · ──┬──
2026-10-24T19:50:25.2117375Z · ╰── 'layer' is declared here
2026-10-24T19:50:25.2117466Z 409 │ ProviderAdapter.ProviderAdapterV2,
2026-10-24T19:50:25.2117517Z ╰────
2026-10-24T19:50:25.2117618Z help: Consider removing this declaration.
2026-10-24T19:50:25.2117621Z
2026-10-24T19:50:25.2117790Z ⚠ react(purity): Cannot call impure function during render
2026-10-24T19:50:25.2117907Z ╭─[apps/web/src/components/Sidebar.tsx:1136:11]
2026-10-24T19:50:25.2118006Z 1135 │ foldSearchQuery(threadSearchQuery),
2026-10-24T19:50:25.2118078Z 1136 │ Date.now(),
2026-10-24T19:50:25.2118164Z · ─────┬────
2026-10-24T19:50:25.2118301Z · ╰── Cannot call impure function
2026-10-24T19:50:25.2118441Z 1137 │ // A list filter, as on mobile: a pick would move rows unexplained.
2026-10-24T19:50:25.2118491Z ╰────
2026-10-24T19:50:25.2118784Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T19:50:25.2119089Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T19:50:25.2119091Z
2026-10-24T19:50:25.2119357Z ⚠ eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
2026-10-24T19:50:25.2119511Z ╭─[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
2026-10-24T19:50:25.2119564Z 1619 │
2026-10-24T19:50:25.2119773Z 1620 │ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
2026-10-24T19:50:25.2119890Z · ──────────────────┬──────────────────
2026-10-24T19:50:25.2120097Z · ╰── 'promptResponseHasMissingXAiStopReason' is declared here
2026-10-24T19:50:25.2120173Z 1621 │ const meta = response._meta;
2026-10-24T19:50:25.2120225Z ╰────
2026-10-24T19:50:25.2120327Z help: Consider removing this declaration.
2026-10-24T19:50:25.2120330Z
2026-10-24T19:50:25.2120858Z ⚠ 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-24T19:50:25.2121014Z ╭─[packages/contracts/src/baseSchemas.test.ts:39:9]
2026-10-24T19:50:25.2121082Z 38 │ JSON.stringify(
2026-10-24T19:50:25.2121202Z 39 │ Schema.encodeUnknownSync(Schema.toCodecJson(Named))([
2026-10-24T19:50:25.2121300Z · ────────────────────────
2026-10-24T19:50:25.2121367Z 40 │ { name: "a" },
2026-10-24T19:50:25.2121418Z ╰────
2026-10-24T19:50:25.2121420Z
2026-10-24T19:50:25.2121884Z ⚠ 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-24T19:50:25.2122028Z ╭─[packages/contracts/src/composerContext.test.ts:181:18]
2026-10-24T19:50:25.2122170Z 180 │ it("sends a message without the records the wire cannot carry", () => {
2026-10-24T19:50:25.2122352Z 181 │ const wire = Schema.encodeUnknownSync(Schema.toCodecJson(OrchestrationMessageContext))({
2026-10-24T19:50:25.2122460Z · ────────────────────────
2026-10-24T19:50:25.2122525Z 182 │ version: 1,
2026-10-24T19:50:25.2122576Z ╰────
2026-10-24T19:50:25.2122579Z
2026-10-24T19:50:25.2122780Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.2122895Z ╭─[apps/mobile/src/state/thread-order.ts:29:7]
2026-10-24T19:50:25.2122971Z 28 │ getPendingThreadOrder();
2026-10-24T19:50:25.2123052Z 29 │ }, [nowMinute, snoozeWakeTick]);
2026-10-24T19:50:25.2123181Z · ────┬──── ───────┬──────
2026-10-24T19:50:25.2123382Z · │ ╰── Unnecessary dependency `snoozeWakeTick`
2026-10-24T19:50:25.2123522Z · ╰── Unnecessary dependency `nowMinute`
2026-10-24T19:50:25.2123587Z 30 │ return pending;
2026-10-24T19:50:25.2123637Z ╰────
2026-10-24T19:50:25.2123969Z 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-24T19:50:25.2124286Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2124288Z
2026-10-24T19:50:25.2124666Z ⚠ 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-24T19:50:25.2124783Z ╭─[packages/contracts/src/auth.test.ts:17:12]
2026-10-24T19:50:25.2124941Z 16 │ it("decodes legacy review credentials without offering them in new grants", () => {
2026-10-24T19:50:25.2125113Z 17 │ expect(Schema.decodeUnknownSync(AuthEnvironmentScopes)(["review:write"])).toEqual([
2026-10-24T19:50:25.2125214Z · ────────────────────────
2026-10-24T19:50:25.2125279Z 18 │ "review:write",
2026-10-24T19:50:25.2125330Z ╰────
2026-10-24T19:50:25.2125333Z
2026-10-24T19:50:25.2125702Z ⚠ 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-24T19:50:25.2125872Z ╭─[packages/contracts/src/auth.test.ts:20:18]
2026-10-24T19:50:25.2125962Z 19 │ ]);
2026-10-24T19:50:25.2126123Z 20 │ expect(() => Schema.decodeUnknownSync(AuthGrantScopes)(["review:write"])).toThrow();
2026-10-24T19:50:25.2126231Z · ────────────────────────
2026-10-24T19:50:25.2126362Z 21 │ expect(AuthStandardClientScopes).not.toContain("review:write");
2026-10-24T19:50:25.2126484Z ╰────
2026-10-24T19:50:25.2126487Z
2026-10-24T19:50:25.2126853Z ⚠ 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-24T19:50:25.2126964Z ╭─[packages/contracts/src/auth.test.ts:58:21]
2026-10-24T19:50:25.2127134Z 57 │ it("ignores unknown response permissions without falling back to broader scopes", () => {
2026-10-24T19:50:25.2127267Z 58 │ const session = Schema.decodeUnknownSync(AuthSessionState)({
2026-10-24T19:50:25.2127376Z · ────────────────────────
2026-10-24T19:50:25.2127445Z 59 │ authenticated: true,
2026-10-24T19:50:25.2127495Z ╰────
2026-10-24T19:50:25.2127498Z
2026-10-24T19:50:25.2127704Z ⚠ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T19:50:25.2127811Z ╭─[packages/contracts/src/rpc.ts:297:8]
2026-10-24T19:50:25.2127877Z 296 │ } from "./device.ts";
2026-10-24T19:50:25.2127972Z 297 │ import {} from "./previewAutomation.ts";
2026-10-24T19:50:25.2128042Z · ──
2026-10-24T19:50:25.2128099Z 298 │ import {
2026-10-24T19:50:25.2128151Z ╰────
2026-10-24T19:50:25.2128233Z help: Remove empty braces
2026-10-24T19:50:25.2128235Z
2026-10-24T19:50:25.2128721Z ⚠ 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-24T19:50:25.2128874Z ╭─[packages/client-runtime/src/state/shell-sync.test.ts:169:7]
2026-10-24T19:50:25.2128934Z 168 │ });
2026-10-24T19:50:25.2129134Z 169 │ ╭─▶ for (let index = 0; index < 100; index += 1) {
2026-10-24T19:50:25.2129332Z 170 │ │ if ((yield* SubscriptionRef.get(shellState)).status === "synchronizing") break;
2026-10-24T19:50:25.2129437Z 171 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2129570Z 172 │ ╰─▶ }
2026-10-24T19:50:25.2129633Z 173 │
2026-10-24T19:50:25.2129690Z ╰────
2026-10-24T19:50:25.2129692Z
2026-10-24T19:50:25.2130167Z ⚠ 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-24T19:50:25.2130316Z ╭─[packages/client-runtime/src/state/shell-sync.test.ts:178:7]
2026-10-24T19:50:25.2130424Z 177 │ yield* Deferred.succeed(releaseSave, undefined);
2026-10-24T19:50:25.2130619Z 178 │ ╭─▶ for (let index = 0; index < 100; index += 1) {
2026-10-24T19:50:25.2130754Z 179 │ │ if ((yield* Ref.get(saved)).length > 0) break;
2026-10-24T19:50:25.2130857Z 180 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2131068Z 181 │ ╰─▶ }
2026-10-24T19:50:25.2131164Z 182 │
2026-10-24T19:50:25.2131216Z ╰────
2026-10-24T19:50:25.2131219Z
2026-10-24T19:50:25.2131691Z ⚠ 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-24T19:50:25.2131836Z ╭─[packages/client-runtime/src/state/shell-sync.test.ts:307:7]
2026-10-24T19:50:25.2131965Z 306 │ yield* Deferred.succeed(releaseUnenrichedSave, undefined);
2026-10-24T19:50:25.2132160Z 307 │ ╭─▶ for (let index = 0; index < 100; index += 1) {
2026-10-24T19:50:25.2132287Z 308 │ │ const values = yield* Ref.get(saved);
2026-10-24T19:50:25.2132485Z 309 │ │ if (values.length > 0 && values.at(-1)?.projects[0]?.repositoryIdentity != null) {
2026-10-24T19:50:25.2132572Z 310 │ │ break;
2026-10-24T19:50:25.2132650Z 311 │ │ }
2026-10-24T19:50:25.2132754Z 312 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2132885Z 313 │ ╰─▶ }
2026-10-24T19:50:25.2132938Z 314 │
2026-10-24T19:50:25.2132992Z ╰────
2026-10-24T19:50:25.2132994Z
2026-10-24T19:50:25.2133377Z ⚠ 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-24T19:50:25.2133513Z ╭─[apps/server/src/assets/AssetAccess.test.ts:975:35]
2026-10-24T19:50:25.2133666Z 974 │ // Every client and server release spells the resource this way on the wire.
2026-10-24T19:50:25.2133824Z 975 │ const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
2026-10-24T19:50:25.2133985Z · ──────────────────────────
2026-10-24T19:50:25.2134101Z 976 │ resource: { _tag: "github-media", cwd: "/repo", url },
2026-10-24T19:50:25.2134152Z ╰────
2026-10-24T19:50:25.2134154Z
2026-10-24T19:50:25.2134609Z ⚠ 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-24T19:50:25.2134740Z ╭─[apps/server/src/assets/AssetAccess.test.ts:1012:32]
2026-10-24T19:50:25.2134884Z 1011 │ expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
2026-10-24T19:50:25.2135077Z 1012 │ const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
2026-10-24T19:50:25.2135191Z · ───────────────────
2026-10-24T19:50:25.2135287Z 1013 │ expect(encoded).not.toContain(url);
2026-10-24T19:50:25.2135339Z ╰────
2026-10-24T19:50:25.2135342Z
2026-10-24T19:50:25.2135557Z ⚠ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T19:50:25.2135692Z ╭─[packages/shared/src/composerContextLegacySend.ts:19:45]
2026-10-24T19:50:25.2135816Z 18 │ const occurrences = collectComposerContextReferences(text);
2026-10-24T19:50:25.2135923Z 19 │ for (const occurrence of [...occurrences].reverse()) {
2026-10-24T19:50:25.2136089Z · ───────
2026-10-24T19:50:25.2136234Z 20 │ const record = recordsById.get(occurrence.contextId);
2026-10-24T19:50:25.2136287Z ╰────
2026-10-24T19:50:25.2136553Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T19:50:25.2136555Z
2026-10-24T19:50:25.2136831Z ⚠ eslint(no-unused-vars): Variable 'claudeCaps' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2136937Z ╭─[packages/shared/src/model.test.ts:36:7]
2026-10-24T19:50:25.2136990Z 35 │
2026-10-24T19:50:25.2137122Z 36 │ const claudeCaps: ModelCapabilities = createModelCapabilities({
2026-10-24T19:50:25.2137197Z · ─────┬────
2026-10-24T19:50:25.2137339Z · ╰── 'claudeCaps' is declared here
2026-10-24T19:50:25.2137413Z 37 │ optionDescriptors: [
2026-10-24T19:50:25.2137464Z ╰────
2026-10-24T19:50:25.2137570Z help: Consider removing this declaration.
2026-10-24T19:50:25.2137572Z
2026-10-24T19:50:25.2137736Z ⚠ eslint(no-empty-pattern): Empty array binding pattern
2026-10-24T19:50:25.2137896Z ╭─[apps/server/src/pullRequest/PullRequestService.test.ts:1437:12]
2026-10-24T19:50:25.2137949Z 1436 │
2026-10-24T19:50:25.2138015Z 1437 │ for (const [] of [
2026-10-24T19:50:25.2138085Z · ──
2026-10-24T19:50:25.2138159Z 1438 │ ["github", "github.com"],
2026-10-24T19:50:25.2138210Z ╰────
2026-10-24T19:50:25.2138497Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-24T19:50:25.2138503Z
2026-10-24T19:50:25.2138699Z ⚠ eslint(no-unused-vars): Type 'EnvironmentId' is imported but never used.
2026-10-24T19:50:25.2138837Z ╭─[packages/client-runtime/src/state/sharedSettings.ts:2:3]
2026-10-24T19:50:25.2138900Z 1 │ import type {
2026-10-24T19:50:25.2138962Z 2 │ EnvironmentId,
2026-10-24T19:50:25.2139035Z · ──────┬──────
2026-10-24T19:50:25.2139174Z · ╰── 'EnvironmentId' is imported here
2026-10-24T19:50:25.2139261Z 3 │ ExecutionEnvironmentCapabilities,
2026-10-24T19:50:25.2139312Z ╰────
2026-10-24T19:50:25.2139411Z help: Consider removing this import.
2026-10-24T19:50:25.2139414Z
2026-10-24T19:50:25.2139611Z ⚠ oxc(no-accumulating-spread): Do not spread accumulators in loops
2026-10-24T19:50:25.2139741Z ╭─[packages/client-runtime/src/state/shell.ts:189:5]
2026-10-24T19:50:25.2139852Z 186 │ let waiting = yield* Ref.get(awaitingCompletion);
2026-10-24T19:50:25.2139918Z 187 │ let next = initial;
2026-10-24T19:50:25.2139989Z · ──┬─
2026-10-24T19:50:25.2140110Z · ╰── From this accumulator
2026-10-24T19:50:25.2140190Z 188 │ let receivedSnapshot = false;
2026-10-24T19:50:25.2140264Z 189 │ for (const item of items) {
2026-10-24T19:50:25.2140333Z · ─┬─
2026-10-24T19:50:25.2140437Z · ╰── For this loop
2026-10-24T19:50:25.2140526Z 190 │ if (item.kind === "synchronized") {
2026-10-24T19:50:25.2140591Z 191 │ waiting = false;
2026-10-24T19:50:25.2140738Z 192 │ if (Option.isSome(next.snapshot)) {
2026-10-24T19:50:25.2140891Z 193 │ next = { ...next, status: "live", error: Option.none() };
2026-10-24T19:50:25.2140977Z · ───┬───
2026-10-24T19:50:25.2141105Z · ╰── From this spread
2026-10-24T19:50:25.2141165Z 194 │ }
2026-10-24T19:50:25.2141216Z ╰────
2026-10-24T19:50:25.2141373Z help: Consider using `Object.assign()` to mutate the accumulator instead.
2026-10-24T19:50:25.2141527Z note: Using spreads within accumulators leads to `O(n^2)` time complexity.
2026-10-24T19:50:25.2141530Z
2026-10-24T19:50:25.2141737Z ⚠ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T19:50:25.2141867Z ╭─[packages/client-runtime/src/state/filesystem.ts:3:8]
2026-10-24T19:50:25.2141944Z 2 │ AuthFilesystemReadScope,
2026-10-24T19:50:25.2142016Z 3 │ type AuthSessionState,
2026-10-24T19:50:25.2142100Z · ────────┬───────
2026-10-24T19:50:25.2142247Z · ╰── 'AuthSessionState' is imported here
2026-10-24T19:50:25.2142321Z 4 │ type FilesystemBrowseEntry,
2026-10-24T19:50:25.2142372Z ╰────
2026-10-24T19:50:25.2142470Z help: Consider removing this import.
2026-10-24T19:50:25.2142472Z
2026-10-24T19:50:25.2142737Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.2142930Z ╭─[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-24T19:50:25.2142983Z 117 │
2026-10-24T19:50:25.2143047Z 118 │ useEffect(() => {
2026-10-24T19:50:25.2143124Z · ────┬────
2026-10-24T19:50:25.2143258Z · ╰── This is the containing effect
2026-10-24T19:50:25.2143336Z 119 │ void refreshNotifications();
2026-10-24T19:50:25.2143426Z · ──────────┬─────────
2026-10-24T19:50:25.2143604Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.2143747Z 120 │ const subscription = AppState.addEventListener("change", (state) => {
2026-10-24T19:50:25.2143798Z ╰────
2026-10-24T19:50:25.2144487Z 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-24T19:50:25.2144849Z 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-24T19:50:25.2144851Z
2026-10-24T19:50:25.2145113Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.2145298Z ╭─[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-24T19:50:25.2145350Z 125 │
2026-10-24T19:50:25.2145414Z 126 │ useEffect(() => {
2026-10-24T19:50:25.2145484Z · ────┬────
2026-10-24T19:50:25.2145613Z · ╰── This is the containing effect
2026-10-24T19:50:25.2145677Z 127 │ if (!isLoaded) {
2026-10-24T19:50:25.2145771Z 128 │ setLiveActivityStatus("checking");
2026-10-24T19:50:25.2145866Z · ──────────┬──────────
2026-10-24T19:50:25.2146040Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.2146102Z 129 │ return;
2026-10-24T19:50:25.2146153Z ╰────
2026-10-24T19:50:25.2146765Z 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-24T19:50:25.2147093Z 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-24T19:50:25.2147095Z
2026-10-24T19:50:25.2147267Z ⚠ eslint(no-control-regex): Unexpected control character
2026-10-24T19:50:25.2147464Z ╭─[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-24T19:50:25.2147604Z 219 │ <Text selectable className="font-mono text-sm text-foreground">
2026-10-24T19:50:25.2147746Z 220 │ {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-24T19:50:25.2147856Z · ──┬─
2026-10-24T19:50:25.2148028Z · ╰── 'U+001B' is a control character.
2026-10-24T19:50:25.2148091Z 221 │ </Text>
2026-10-24T19:50:25.2148142Z ╰────
2026-10-24T19:50:25.2148385Z help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-24T19:50:25.2148390Z
2026-10-24T19:50:25.2148573Z ⚠ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T19:50:25.2148735Z ╭─[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-24T19:50:25.2148843Z 99 │ const startEditor = startScheduledTaskEditor;
2026-10-24T19:50:25.2149028Z 100 │ const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-24T19:50:25.2149176Z · ─────┬─────
2026-10-24T19:50:25.2149383Z · ╰── Unnecessary dependency `startEditor`
2026-10-24T19:50:25.2149465Z 101 │ const readEditor = useCallback(
2026-10-24T19:50:25.2149583Z ╰────
2026-10-24T19:50:25.2149937Z 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-24T19:50:25.2150256Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2150261Z
2026-10-24T19:50:25.2150443Z ⚠ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T19:50:25.2150608Z ╭─[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-24T19:50:25.2150670Z 120 │ setEditor,
2026-10-24T19:50:25.2150734Z 121 │ startEditor,
2026-10-24T19:50:25.2150810Z · ─────┬─────
2026-10-24T19:50:25.2150961Z · ╰── Unnecessary dependency `startEditor`
2026-10-24T19:50:25.2151028Z 122 │ hasChanges,
2026-10-24T19:50:25.2151080Z ╰────
2026-10-24T19:50:25.2151396Z 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-24T19:50:25.2151710Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2151712Z
2026-10-24T19:50:25.2151911Z ⚠ eslint(no-unused-vars): Identifier 'Fiber' is imported but never used.
2026-10-24T19:50:25.2152006Z ╭─[apps/server/src/ws.ts:10:13]
2026-10-24T19:50:25.2152093Z 9 │ import * as Effect from "effect/Effect";
2026-10-24T19:50:25.2152183Z 10 │ import * as Fiber from "effect/Fiber";
2026-10-24T19:50:25.2152262Z · ──┬──
2026-10-24T19:50:25.2152391Z · ╰── 'Fiber' is imported here
2026-10-24T19:50:25.2152491Z 11 │ import * as FileSystem from "effect/FileSystem";
2026-10-24T19:50:25.2152543Z ╰────
2026-10-24T19:50:25.2152641Z help: Consider removing this import.
2026-10-24T19:50:25.2152644Z
2026-10-24T19:50:25.2152842Z ⚠ eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
2026-10-24T19:50:25.2152934Z ╭─[apps/server/src/ws.ts:17:13]
2026-10-24T19:50:25.2153013Z 16 │ import * as Ref from "effect/Ref";
2026-10-24T19:50:25.2153106Z 17 │ import * as Schedule from "effect/Schedule";
2026-10-24T19:50:25.2153185Z · ────┬───
2026-10-24T19:50:25.2153325Z · ╰── 'Schedule' is imported here
2026-10-24T19:50:25.2153413Z 18 │ import * as Schema from "effect/Schema";
2026-10-24T19:50:25.2153465Z ╰────
2026-10-24T19:50:25.2153562Z help: Consider removing this import.
2026-10-24T19:50:25.2153564Z
2026-10-24T19:50:25.2153867Z ⚠ eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2153994Z ╭─[apps/server/src/ws.ts:1286:13]
2026-10-24T19:50:25.2154151Z 1285 │ const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
2026-10-24T19:50:25.2154350Z 1286 │ const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
2026-10-24T19:50:25.2154459Z · ────────────┬───────────
2026-10-24T19:50:25.2154692Z · ╰── 'projectSetupScriptRunner' is declared here
2026-10-24T19:50:25.2154896Z 1287 │ const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
2026-10-24T19:50:25.2154950Z ╰────
2026-10-24T19:50:25.2155055Z help: Consider removing this declaration.
2026-10-24T19:50:25.2155058Z
2026-10-24T19:50:25.2155320Z ⚠ unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
2026-10-24T19:50:25.2155466Z ╭─[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
2026-10-24T19:50:25.2155623Z 11 │ addEventListener(_type: string, listener: (event: { data: string }) => void) {
2026-10-24T19:50:25.2155703Z 12 │ this.onmessage = listener;
2026-10-24T19:50:25.2155781Z · ─────────
2026-10-24T19:50:25.2155839Z 13 │ }
2026-10-24T19:50:25.2155899Z ╰────
2026-10-24T19:50:25.2156223Z help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
2026-10-24T19:50:25.2156226Z
2026-10-24T19:50:25.2156432Z ⚠ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
2026-10-24T19:50:25.2156574Z ╭─[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
2026-10-24T19:50:25.2156640Z 15 │ constructor() {
2026-10-24T19:50:25.2156706Z 16 │ source = this;
2026-10-24T19:50:25.2156776Z · ──────
2026-10-24T19:50:25.2156833Z 17 │ }
2026-10-24T19:50:25.2156885Z ╰────
2026-10-24T19:50:25.2157171Z 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-24T19:50:25.2157176Z
2026-10-24T19:50:25.2157385Z ⚠ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
2026-10-24T19:50:25.2157547Z ╭─[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
2026-10-24T19:50:25.2157635Z 24 │ import * as Schema from "effect/Schema";
2026-10-24T19:50:25.2157751Z 25 │ import * as HostProcess from "@t3tools/shared/HostProcess";
2026-10-24T19:50:25.2157834Z · ─────┬─────
2026-10-24T19:50:25.2157975Z · ╰── 'HostProcess' is imported here
2026-10-24T19:50:25.2158029Z 26 │
2026-10-24T19:50:25.2158082Z ╰────
2026-10-24T19:50:25.2158177Z help: Consider removing this import.
2026-10-24T19:50:25.2158181Z
2026-10-24T19:50:25.2158466Z ⚠ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2158637Z ╭─[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
2026-10-24T19:50:25.2158720Z 123 │ const path = yield* Path.Path;
2026-10-24T19:50:25.2158839Z 124 │ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T19:50:25.2158920Z · ──────┬─────
2026-10-24T19:50:25.2159059Z · ╰── 'serverConfig' is declared here
2026-10-24T19:50:25.2159202Z 125 │ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T19:50:25.2159253Z ╰────
2026-10-24T19:50:25.2159355Z help: Consider removing this declaration.
2026-10-24T19:50:25.2159358Z
2026-10-24T19:50:25.2159697Z ⚠ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2159896Z ╭─[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
2026-10-24T19:50:25.2160011Z 124 │ const serverConfig = yield* ServerConfig.ServerConfig;
2026-10-24T19:50:25.2160152Z 125 │ const serverSettings = yield* ServerSettings.ServerSettingsService;
2026-10-24T19:50:25.2160239Z · ───────┬──────
2026-10-24T19:50:25.2160386Z · ╰── 'serverSettings' is declared here
2026-10-24T19:50:25.2160524Z 126 │ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
2026-10-24T19:50:25.2160574Z ╰────
2026-10-24T19:50:25.2160677Z help: Consider removing this declaration.
2026-10-24T19:50:25.2160680Z
2026-10-24T19:50:25.2160893Z ⚠ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T19:50:25.2161066Z ╭─[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-24T19:50:25.2161140Z 14 │ } from "@t3tools/contracts";
2026-10-24T19:50:25.2161229Z 15 │ import type {} from "@t3tools/contracts";
2026-10-24T19:50:25.2161299Z · ──
2026-10-24T19:50:25.2161351Z 16 │
2026-10-24T19:50:25.2161401Z ╰────
2026-10-24T19:50:25.2161483Z help: Remove empty braces
2026-10-24T19:50:25.2161486Z
2026-10-24T19:50:25.2161718Z ⚠ eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
2026-10-24T19:50:25.2161838Z ╭─[apps/server/src/checkpointing/Utils.ts:12:10]
2026-10-24T19:50:25.2161892Z 11 │
2026-10-24T19:50:25.2161994Z 12 │ function resolveThreadWorkspaceCwd(input: {
2026-10-24T19:50:25.2162098Z · ────────────┬────────────
2026-10-24T19:50:25.2162270Z · ╰── 'resolveThreadWorkspaceCwd' is declared here
2026-10-24T19:50:25.2162336Z 13 │ readonly thread: {
2026-10-24T19:50:25.2162387Z ╰────
2026-10-24T19:50:25.2162492Z help: Consider removing this declaration.
2026-10-24T19:50:25.2162494Z
2026-10-24T19:50:25.2162761Z ⚠ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2162893Z ╭─[apps/server/src/telemetry/AnalyticsService.ts:340:7]
2026-10-24T19:50:25.2162946Z 339 │
2026-10-24T19:50:25.2163049Z 340 │ const layerTest = AnalyticsService.layerTest;
2026-10-24T19:50:25.2163131Z · ────┬────
2026-10-24T19:50:25.2163267Z · ╰── 'layerTest' is declared here
2026-10-24T19:50:25.2163317Z ╰────
2026-10-24T19:50:25.2163422Z help: Consider removing this declaration.
2026-10-24T19:50:25.2163424Z
2026-10-24T19:50:25.2163641Z ⚠ react(no-unstable-nested-components): Do not define components during render.
2026-10-24T19:50:25.2163748Z ╭─[apps/mobile/src/Stack.tsx:1079:21]
2026-10-24T19:50:25.2163812Z 1078 │ <Navigator
2026-10-24T19:50:25.2164010Z 1079 │ screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T19:50:25.2164151Z · ─────────────────────────────────────────────
2026-10-24T19:50:25.2164235Z 1080 │ screenOptions={({ route }) =>
2026-10-24T19:50:25.2164286Z ╰────
2026-10-24T19:50:25.2164720Z 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-24T19:50:25.2164786Z
2026-10-24T19:50:25.2164995Z ⚠ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T19:50:25.2165134Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:231:6]
2026-10-24T19:50:25.2165297Z 227 │ nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T19:50:25.2165387Z 228 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2165480Z · ───────────┬───────────
2026-10-24T19:50:25.2165958Z · ╰── 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-24T19:50:25.2166038Z 229 │ mostRecentEventCount,
2026-10-24T19:50:25.2166093Z 230 │ );
2026-10-24T19:50:25.2166215Z 231 │ }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T19:50:25.2166353Z · ──────────────────────────┬──────────────────────────
2026-10-24T19:50:25.2166628Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2166710Z 232 │ const assumedValue = props.value;
2026-10-24T19:50:25.2166762Z ╰────
2026-10-24T19:50:25.2166933Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T19:50:25.2167260Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2167266Z
2026-10-24T19:50:25.2167484Z ⚠ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T19:50:25.2167620Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:239:7]
2026-10-24T19:50:25.2167765Z 238 │ nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T19:50:25.2167856Z 239 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2167946Z · ───────────┬───────────
2026-10-24T19:50:25.2168421Z · ╰── 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-24T19:50:25.2168565Z 240 │ controlledEventCount,
2026-10-24T19:50:25.2168672Z 241 │ assumedValue,
2026-10-24T19:50:25.2168729Z 242 │ );
2026-10-24T19:50:25.2168886Z 243 │ }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T19:50:25.2169024Z · ───────────┬──────────
2026-10-24T19:50:25.2169237Z · ╰── Unnecessary dependency `controlledDocumentJson`
2026-10-24T19:50:25.2169330Z 244 │ const acceptNativeEvent = useCallback(
2026-10-24T19:50:25.2169380Z ╰────
2026-10-24T19:50:25.2169812Z 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-24T19:50:25.2170138Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2170145Z
2026-10-24T19:50:25.2170295Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2170433Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T19:50:25.2170558Z 163 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2170670Z 164 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2170789Z · ─────────────┬────────────
2026-10-24T19:50:25.2170960Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2171016Z 165 │ });
2026-10-24T19:50:25.2171075Z ╰────
2026-10-24T19:50:25.2171559Z 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-24T19:50:25.2171854Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2171857Z
2026-10-24T19:50:25.2172001Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2172140Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:164:29]
2026-10-24T19:50:25.2172262Z 163 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2172373Z 164 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2172492Z · ─────────────┬────────────
2026-10-24T19:50:25.2172707Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2172764Z 165 │ });
2026-10-24T19:50:25.2172815Z ╰────
2026-10-24T19:50:25.2173290Z 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-24T19:50:25.2173584Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2173587Z
2026-10-24T19:50:25.2173798Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2174001Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:166:23]
2026-10-24T19:50:25.2174058Z 165 │ });
2026-10-24T19:50:25.2174146Z 166 │ confirmedTokensRef.current = tokens;
2026-10-24T19:50:25.2174272Z · ─────────┬────────────┬───
2026-10-24T19:50:25.2174464Z · │ ╰── Cannot update ref value during render
2026-10-24T19:50:25.2174584Z · ╰── This value is a ref
2026-10-24T19:50:25.2174655Z 167 │ return JSON.stringify(
2026-10-24T19:50:25.2174707Z ╰────
2026-10-24T19:50:25.2175187Z 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-24T19:50:25.2175485Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2175487Z
2026-10-24T19:50:25.2175634Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2175767Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:208:5]
2026-10-24T19:50:25.2175839Z 207 │ mostRecentEventCount,
2026-10-24T19:50:25.2175928Z 208 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2176036Z · ───────────────┬───────────────
2026-10-24T19:50:25.2176227Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2176287Z 209 │ );
2026-10-24T19:50:25.2176344Z ╰────
2026-10-24T19:50:25.2176818Z 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-24T19:50:25.2177111Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2177116Z
2026-10-24T19:50:25.2177259Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2177394Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:214:5]
2026-10-24T19:50:25.2177466Z 213 │ mostRecentEventCount,
2026-10-24T19:50:25.2177552Z 214 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2177659Z · ───────────────┬───────────────
2026-10-24T19:50:25.2177856Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2177913Z 215 │ );
2026-10-24T19:50:25.2177966Z ╰────
2026-10-24T19:50:25.2178437Z 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-24T19:50:25.2178730Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2178732Z
2026-10-24T19:50:25.2178923Z ⚠ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T19:50:25.2179117Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:199:6]
2026-10-24T19:50:25.2179268Z 163 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2179378Z 164 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2179489Z · ─────────┬────────
2026-10-24T19:50:25.2179971Z · ╰── 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-24T19:50:25.2180026Z 165 │ });
2026-10-24T19:50:25.2180114Z 166 │ confirmedTokensRef.current = tokens;
2026-10-24T19:50:25.2180185Z 167 │ return JSON.stringify(
2026-10-24T19:50:25.2180357Z 168 │ composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T19:50:25.2180428Z 169 │ const record =
2026-10-24T19:50:25.2180506Z 170 │ token.type === "context"
2026-10-24T19:50:25.2180673Z 171 │ ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T19:50:25.2180740Z 172 │ : undefined;
2026-10-24T19:50:25.2180850Z 173 │ const presentation = contextChipPresentation(
2026-10-24T19:50:25.2180959Z 174 │ token.type === "context" ? token.kind : token.type,
2026-10-24T19:50:25.2181022Z 175 │ record,
2026-10-24T19:50:25.2181081Z 176 │ );
2026-10-24T19:50:25.2181165Z 177 │ const icon = contextChipIcon(
2026-10-24T19:50:25.2181232Z 178 │ presentation,
2026-10-24T19:50:25.2181376Z 179 │ token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T19:50:25.2181441Z 180 │ );
2026-10-24T19:50:25.2181507Z 181 │ return {
2026-10-24T19:50:25.2181576Z 182 │ type: token.type,
2026-10-24T19:50:25.2181650Z 183 │ source: token.source,
2026-10-24T19:50:25.2181724Z 184 │ start: token.start,
2026-10-24T19:50:25.2181789Z 185 │ end: token.end,
2026-10-24T19:50:25.2181939Z 186 │ accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T19:50:25.2182000Z 187 │ label:
2026-10-24T19:50:25.2182078Z 188 │ token.type === "skill"
2026-10-24T19:50:25.2182185Z 189 │ ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T19:50:25.2182270Z 190 │ : token.type === "context"
2026-10-24T19:50:25.2182516Z 191 │ ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " · unavailable"}`
2026-10-24T19:50:25.2182601Z 192 │ : basename(token.value),
2026-10-24T19:50:25.2182745Z 193 │ detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T19:50:25.2182838Z 194 │ iconUri: contextChipIconUri(icon),
2026-10-24T19:50:25.2182926Z 195 │ tintsIcon: icon.kind === "chip",
2026-10-24T19:50:25.2182985Z 196 │ };
2026-10-24T19:50:25.2183042Z 197 │ }),
2026-10-24T19:50:25.2183097Z 198 │ );
2026-10-24T19:50:25.2183231Z 199 │ }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T19:50:25.2183385Z · ───────────────────────────────┬───────────────────────────────
2026-10-24T19:50:25.2183593Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2183917Z 200 │ // Every render resolves against the snapshot history, so a render whose
2026-10-24T19:50:25.2184007Z ╰────
2026-10-24T19:50:25.2184220Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T19:50:25.2184538Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2184541Z
2026-10-24T19:50:25.2184729Z ⚠ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T19:50:25.2184868Z ╭─[apps/mobile/src/native/T3ComposerEditor.ios.tsx:261:5]
2026-10-24T19:50:25.2185000Z 253 │ mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T19:50:25.2185103Z 254 │ nativeEventSnapshotsRef.current.push({
2026-10-24T19:50:25.2185199Z · ───────────┬───────────
2026-10-24T19:50:25.2185673Z · ╰── 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-24T19:50:25.2185767Z 255 │ eventCount: acknowledgedEventCount,
2026-10-24T19:50:25.2185831Z 256 │ value,
2026-10-24T19:50:25.2185908Z 257 │ selection: nextSelection,
2026-10-24T19:50:25.2185965Z 258 │ });
2026-10-24T19:50:25.2186051Z 259 │ return acknowledgedEventCount;
2026-10-24T19:50:25.2186108Z 260 │ },
2026-10-24T19:50:25.2186162Z 261 │ [],
2026-10-24T19:50:25.2186231Z · ─┬
2026-10-24T19:50:25.2186423Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2186481Z 262 │ );
2026-10-24T19:50:25.2186531Z ╰────
2026-10-24T19:50:25.2186738Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T19:50:25.2187056Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2187059Z
2026-10-24T19:50:25.2187205Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2187326Z ╭─[apps/mobile/src/native/StackHeader.tsx:185:9]
2026-10-24T19:50:25.2187392Z 184 │ "options",
2026-10-24T19:50:25.2187485Z 185 │ latestOptionFunctionsRef.current,
2026-10-24T19:50:25.2187595Z · ────────────────┬───────────────
2026-10-24T19:50:25.2187846Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2187976Z 186 │ optionFunctionWrappersRef.current,
2026-10-24T19:50:25.2188028Z ╰────
2026-10-24T19:50:25.2188503Z 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-24T19:50:25.2188800Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2188803Z
2026-10-24T19:50:25.2188948Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2189071Z ╭─[apps/mobile/src/native/StackHeader.tsx:186:9]
2026-10-24T19:50:25.2189166Z 185 │ latestOptionFunctionsRef.current,
2026-10-24T19:50:25.2189260Z 186 │ optionFunctionWrappersRef.current,
2026-10-24T19:50:25.2189369Z · ────────────────┬────────────────
2026-10-24T19:50:25.2189562Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2189654Z 187 │ ) as NativeStackNavigationOptions)
2026-10-24T19:50:25.2189707Z ╰────
2026-10-24T19:50:25.2190177Z 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-24T19:50:25.2190475Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2190481Z
2026-10-24T19:50:25.2190680Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.2190827Z ╭─[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
2026-10-24T19:50:25.2190914Z 35 │ <T3SourceTextRunNativeComponent
2026-10-24T19:50:25.2190977Z 36 │ key={index}
2026-10-24T19:50:25.2191056Z · ───────────
2026-10-24T19:50:25.2191130Z 37 │ style={flattenedStyle}
2026-10-24T19:50:25.2191183Z ╰────
2026-10-24T19:50:25.2191331Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.2191334Z
2026-10-24T19:50:25.2191781Z ⚠ 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-24T19:50:25.2191933Z ╭─[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
2026-10-24T19:50:25.2192014Z 262 │ ...(update._meta !== undefined
2026-10-24T19:50:25.2192182Z 263 │ ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
2026-10-24T19:50:25.2192270Z · ─────────
2026-10-24T19:50:25.2192331Z 264 │ : {}),
2026-10-24T19:50:25.2192382Z ╰────
2026-10-24T19:50:25.2192385Z
2026-10-24T19:50:25.2192569Z ⚠ eslint(no-unused-vars): Type 'Scope' is imported but never used.
2026-10-24T19:50:25.2192706Z ╭─[apps/server/src/provider/ProviderAuthService.ts:15:18]
2026-10-24T19:50:25.2192846Z 14 │ import * as Layer from "effect/Layer";
2026-10-24T19:50:25.2192968Z 15 │ import type * as Scope from "effect/Scope";
2026-10-24T19:50:25.2193048Z · ──┬──
2026-10-24T19:50:25.2193180Z · ╰── 'Scope' is imported here
2026-10-24T19:50:25.2193266Z 16 │ import * as Stream from "effect/Stream";
2026-10-24T19:50:25.2193320Z ╰────
2026-10-24T19:50:25.2193418Z help: Consider removing this import.
2026-10-24T19:50:25.2193422Z
2026-10-24T19:50:25.2193795Z ⚠ 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-24T19:50:25.2193946Z ╭─[apps/server/src/auth/RpcAuthorization.ts:237:17]
2026-10-24T19:50:25.2194083Z 236 │ const requiredScopesForSettingsUpdate = (payload: unknown) => {
2026-10-24T19:50:25.2194223Z 237 │ const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
2026-10-24T19:50:25.2194332Z · ────────────────────────
2026-10-24T19:50:25.2194470Z 238 │ const scopes = requiredScopesForServerSettingsPatch(input.patch);
2026-10-24T19:50:25.2194522Z ╰────
2026-10-24T19:50:25.2194524Z
2026-10-24T19:50:25.2194894Z ⚠ 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-24T19:50:25.2195016Z ╭─[apps/server/src/auth/RpcAuthorization.ts:256:26]
2026-10-24T19:50:25.2195115Z 255 │ if (method === WS_METHODS.assetsCreateUrl) {
2026-10-24T19:50:25.2195272Z 256 │ const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
2026-10-24T19:50:25.2195394Z · ────────────────────────
2026-10-24T19:50:25.2195458Z 257 │ return [
2026-10-24T19:50:25.2195509Z ╰────
2026-10-24T19:50:25.2195512Z
2026-10-24T19:50:25.2195713Z ⚠ eslint(no-unused-vars): Identifier 'identity' is imported but never used.
2026-10-24T19:50:25.2195816Z ╭─[apps/server/src/auth/http.ts:28:10]
2026-10-24T19:50:25.2195904Z 27 │ import * as Schema from "effect/Schema";
2026-10-24T19:50:25.2195994Z 28 │ import { identity } from "effect/Function";
2026-10-24T19:50:25.2196069Z · ────┬───
2026-10-24T19:50:25.2196204Z · ╰── 'identity' is imported here
2026-10-24T19:50:25.2196288Z 29 │ import * as Layer from "effect/Layer";
2026-10-24T19:50:25.2196341Z ╰────
2026-10-24T19:50:25.2196437Z help: Consider removing this import.
2026-10-24T19:50:25.2196446Z
2026-10-24T19:50:25.2196643Z ⚠ eslint(no-unused-vars): Identifier 'Image' is imported but never used.
2026-10-24T19:50:25.2196788Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
2026-10-24T19:50:25.2196921Z 16 │ import type { NativeSyntheticEvent, ViewProps } from "react-native";
2026-10-24T19:50:25.2197039Z 17 │ import { Image, Platform, StyleSheet } from "react-native";
2026-10-24T19:50:25.2197112Z · ──┬──
2026-10-24T19:50:25.2197238Z · ╰── 'Image' is imported here
2026-10-24T19:50:25.2197289Z 18 │
2026-10-24T19:50:25.2197340Z ╰────
2026-10-24T19:50:25.2197435Z help: Consider removing this import.
2026-10-24T19:50:25.2197437Z
2026-10-24T19:50:25.2197700Z ⚠ react(exhaustive-effect-dependencies): Found missing effect dependencies
2026-10-24T19:50:25.2197874Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:229:6]
2026-10-24T19:50:25.2198039Z 225 │ nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
2026-10-24T19:50:25.2198128Z 226 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2198220Z · ───────────┬───────────
2026-10-24T19:50:25.2198690Z · ╰── 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-24T19:50:25.2198766Z 227 │ mostRecentEventCount,
2026-10-24T19:50:25.2198823Z 228 │ );
2026-10-24T19:50:25.2198946Z 229 │ }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
2026-10-24T19:50:25.2199086Z · ──────────────────────────┬──────────────────────────
2026-10-24T19:50:25.2199295Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2199378Z 230 │ const assumedValue = props.value;
2026-10-24T19:50:25.2199430Z ╰────
2026-10-24T19:50:25.2199600Z help: Missing dependencies can cause an effect to fire less often than it should
2026-10-24T19:50:25.2199920Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2199922Z
2026-10-24T19:50:25.2200140Z ⚠ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T19:50:25.2200290Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:237:7]
2026-10-24T19:50:25.2200436Z 236 │ nativeEventSnapshotsRef.current = assumeComposerControlledState(
2026-10-24T19:50:25.2200523Z 237 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2200615Z · ───────────┬───────────
2026-10-24T19:50:25.2201085Z · ╰── 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-24T19:50:25.2201160Z 238 │ controlledEventCount,
2026-10-24T19:50:25.2201225Z 239 │ assumedValue,
2026-10-24T19:50:25.2201284Z 240 │ );
2026-10-24T19:50:25.2202459Z 241 │ }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
2026-10-24T19:50:25.2202618Z · ───────────┬──────────
2026-10-24T19:50:25.2202841Z · ╰── Unnecessary dependency `controlledDocumentJson`
2026-10-24T19:50:25.2202932Z 242 │ const acceptNativeEvent = useCallback(
2026-10-24T19:50:25.2202982Z ╰────
2026-10-24T19:50:25.2203417Z 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-24T19:50:25.2203737Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2203740Z
2026-10-24T19:50:25.2204000Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2204181Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T19:50:25.2204304Z 161 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2204418Z 162 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2204535Z · ─────────────┬────────────
2026-10-24T19:50:25.2204707Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2204763Z 163 │ });
2026-10-24T19:50:25.2204815Z ╰────
2026-10-24T19:50:25.2205296Z 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-24T19:50:25.2205598Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2205605Z
2026-10-24T19:50:25.2205750Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2205896Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:162:29]
2026-10-24T19:50:25.2206018Z 161 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2206128Z 162 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2206244Z · ─────────────┬────────────
2026-10-24T19:50:25.2206712Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2206776Z 163 │ });
2026-10-24T19:50:25.2206831Z ╰────
2026-10-24T19:50:25.2207305Z 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-24T19:50:25.2207597Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2207600Z
2026-10-24T19:50:25.2207746Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2207890Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:164:23]
2026-10-24T19:50:25.2207944Z 163 │ });
2026-10-24T19:50:25.2208034Z 164 │ confirmedTokensRef.current = tokens;
2026-10-24T19:50:25.2208229Z · ─────────┬────────────┬───
2026-10-24T19:50:25.2208463Z · │ ╰── Cannot update ref value during render
2026-10-24T19:50:25.2208581Z · ╰── This value is a ref
2026-10-24T19:50:25.2208654Z 165 │ return JSON.stringify(
2026-10-24T19:50:25.2208705Z ╰────
2026-10-24T19:50:25.2209177Z 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-24T19:50:25.2209468Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2209473Z
2026-10-24T19:50:25.2209622Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2209768Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:206:5]
2026-10-24T19:50:25.2209838Z 205 │ mostRecentEventCount,
2026-10-24T19:50:25.2209924Z 206 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2210029Z · ───────────────┬───────────────
2026-10-24T19:50:25.2210218Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2210273Z 207 │ );
2026-10-24T19:50:25.2210323Z ╰────
2026-10-24T19:50:25.2210800Z 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-24T19:50:25.2211095Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2211098Z
2026-10-24T19:50:25.2211242Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2211386Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:212:5]
2026-10-24T19:50:25.2211455Z 211 │ mostRecentEventCount,
2026-10-24T19:50:25.2211542Z 212 │ nativeEventSnapshotsRef.current,
2026-10-24T19:50:25.2211645Z · ───────────────┬───────────────
2026-10-24T19:50:25.2211833Z · ╰── Passing a ref to a function may read its value during render
2026-10-24T19:50:25.2211886Z 213 │ );
2026-10-24T19:50:25.2211937Z ╰────
2026-10-24T19:50:25.2212413Z 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-24T19:50:25.2212708Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2212710Z
2026-10-24T19:50:25.2212899Z ⚠ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T19:50:25.2213040Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:197:6]
2026-10-24T19:50:25.2213161Z 161 │ const tokens = collectComposerInlineTokens(props.value, {
2026-10-24T19:50:25.2213273Z 162 │ preserveTrailingFrom: confirmedTokensRef.current,
2026-10-24T19:50:25.2213435Z · ─────────┬────────
2026-10-24T19:50:25.2213967Z · ╰── 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-24T19:50:25.2214023Z 163 │ });
2026-10-24T19:50:25.2214113Z 164 │ confirmedTokensRef.current = tokens;
2026-10-24T19:50:25.2214185Z 165 │ return JSON.stringify(
2026-10-24T19:50:25.2214348Z 166 │ composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
2026-10-24T19:50:25.2214415Z 167 │ const record =
2026-10-24T19:50:25.2214494Z 168 │ token.type === "context"
2026-10-24T19:50:25.2214665Z 169 │ ? props.context?.records.find((record) => record.contextId === token.contextId)
2026-10-24T19:50:25.2214732Z 170 │ : undefined;
2026-10-24T19:50:25.2214840Z 171 │ const presentation = contextChipPresentation(
2026-10-24T19:50:25.2214950Z 172 │ token.type === "context" ? token.kind : token.type,
2026-10-24T19:50:25.2215012Z 173 │ record,
2026-10-24T19:50:25.2215069Z 174 │ );
2026-10-24T19:50:25.2215153Z 175 │ const icon = contextChipIcon(
2026-10-24T19:50:25.2215219Z 176 │ presentation,
2026-10-24T19:50:25.2215363Z 177 │ token.type === "mention" ? token.value : contextRecordFileName(record),
2026-10-24T19:50:25.2215419Z 178 │ );
2026-10-24T19:50:25.2215481Z 179 │ return {
2026-10-24T19:50:25.2215552Z 180 │ type: token.type,
2026-10-24T19:50:25.2215626Z 181 │ source: token.source,
2026-10-24T19:50:25.2215696Z 182 │ start: token.start,
2026-10-24T19:50:25.2215769Z 183 │ end: token.end,
2026-10-24T19:50:25.2215920Z 184 │ accent: contextChipAccent(presentation.accent, theme, chipTextColor),
2026-10-24T19:50:25.2215979Z 185 │ label:
2026-10-24T19:50:25.2216055Z 186 │ token.type === "skill"
2026-10-24T19:50:25.2216161Z 187 │ ? (skillLabels.get(token.value) ?? token.value)
2026-10-24T19:50:25.2216242Z 188 │ : token.type === "context"
2026-10-24T19:50:25.2216480Z 189 │ ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " · unavailable"}`
2026-10-24T19:50:25.2216561Z 190 │ : basename(token.value),
2026-10-24T19:50:25.2216704Z 191 │ detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
2026-10-24T19:50:25.2216796Z 192 │ iconUri: contextChipIconUri(icon),
2026-10-24T19:50:25.2216888Z 193 │ tintsIcon: icon.kind === "chip",
2026-10-24T19:50:25.2216947Z 194 │ };
2026-10-24T19:50:25.2217005Z 195 │ }),
2026-10-24T19:50:25.2217059Z 196 │ );
2026-10-24T19:50:25.2217192Z 197 │ }, [props.value, props.context, skillLabels, theme, chipTextColor]);
2026-10-24T19:50:25.2217344Z · ───────────────────────────────┬───────────────────────────────
2026-10-24T19:50:25.2217552Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2217691Z 198 │ // Every render resolves against the snapshot history, so a render whose
2026-10-24T19:50:25.2217742Z ╰────
2026-10-24T19:50:25.2217953Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T19:50:25.2218335Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2218376Z
2026-10-24T19:50:25.2218565Z ⚠ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T19:50:25.2218706Z ╭─[apps/mobile/src/native/T3ComposerEditor.native.tsx:259:5]
2026-10-24T19:50:25.2218834Z 251 │ mostRecentEventCountRef.current = acknowledgedEventCount;
2026-10-24T19:50:25.2218936Z 252 │ nativeEventSnapshotsRef.current.push({
2026-10-24T19:50:25.2219029Z · ───────────┬───────────
2026-10-24T19:50:25.2219500Z · ╰── 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-24T19:50:25.2219595Z 253 │ eventCount: acknowledgedEventCount,
2026-10-24T19:50:25.2219656Z 254 │ value,
2026-10-24T19:50:25.2219733Z 255 │ selection: nextSelection,
2026-10-24T19:50:25.2219790Z 256 │ });
2026-10-24T19:50:25.2219872Z 257 │ return acknowledgedEventCount;
2026-10-24T19:50:25.2219925Z 258 │ },
2026-10-24T19:50:25.2219979Z 259 │ [],
2026-10-24T19:50:25.2220047Z · ─┬
2026-10-24T19:50:25.2220228Z · ╰── This dependency list is missing values used by the callback
2026-10-24T19:50:25.2220282Z 260 │ );
2026-10-24T19:50:25.2220333Z ╰────
2026-10-24T19:50:25.2220541Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T19:50:25.2220863Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2220869Z
2026-10-24T19:50:25.2221037Z ⚠ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T19:50:25.2221158Z ╭─[apps/server/src/processRunner.test.ts:266:14]
2026-10-24T19:50:25.2221211Z 265 │
2026-10-24T19:50:25.2221316Z 266 │ for (const {} of ["timeout", "success"] as const) {
2026-10-24T19:50:25.2221387Z · ──
2026-10-24T19:50:25.2221441Z 267 │ }
2026-10-24T19:50:25.2221492Z ╰────
2026-10-24T19:50:25.2221724Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T19:50:25.2221727Z
2026-10-24T19:50:25.2221994Z ⚠ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2222163Z ╭─[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:410:7]
2026-10-24T19:50:25.2222215Z 409 │
2026-10-24T19:50:25.2222340Z 410 │ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
2026-10-24T19:50:25.2222409Z · ──┬──
2026-10-24T19:50:25.2222534Z · ╰── 'layer' is declared here
2026-10-24T19:50:25.2222586Z ╰────
2026-10-24T19:50:25.2222691Z help: Consider removing this declaration.
2026-10-24T19:50:25.2222694Z
2026-10-24T19:50:25.2223231Z ⚠ 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-24T19:50:25.2223395Z ╭─[apps/server/src/usage/UsageService.test.ts:2615:7]
2026-10-24T19:50:25.2223493Z 2614 │ let orphanedAt: number | undefined;
2026-10-24T19:50:25.2223731Z 2615 │ ╭─▶ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2026-10-24T19:50:25.2223852Z 2616 │ │ const tasks: Array<() => void> = [];
2026-10-24T19:50:25.2224030Z 2617 │ │ const dispatcher: Scheduler.SchedulerDispatcher = {
2026-10-24T19:50:25.2224162Z 2618 │ │ scheduleTask: (task) => tasks.push(task),
2026-10-24T19:50:25.2224260Z 2619 │ │ flush: () => {
2026-10-24T19:50:25.2224381Z 2620 │ │ let task: (() => void) | undefined;
2026-10-24T19:50:25.2224536Z 2621 │ │ while ((task = tasks.shift()) !== undefined) task();
2026-10-24T19:50:25.2224620Z 2622 │ │ },
2026-10-24T19:50:25.2224700Z 2623 │ │ };
2026-10-24T19:50:25.2224770Z 2624 │ │
2026-10-24T19:50:25.2224929Z 2625 │ │ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2026-10-24T19:50:25.2225034Z 2626 │ │ let requestChecks = 0;
2026-10-24T19:50:25.2225163Z 2627 │ │ const scheduler: Scheduler.Scheduler = {
2026-10-24T19:50:25.2225271Z 2628 │ │ executionMode: "async",
2026-10-24T19:50:25.2225390Z 2629 │ │ makeDispatcher: () => dispatcher,
2026-10-24T19:50:25.2225507Z 2630 │ │ shouldYield: (fiber) => {
2026-10-24T19:50:25.2225643Z 2631 │ │ if (fiber !== requestFiber) return false;
2026-10-24T19:50:25.2225747Z 2632 │ │ requestChecks += 1;
2026-10-24T19:50:25.2225887Z 2633 │ │ if (requestChecks !== interruptAt) return false;
2026-10-24T19:50:25.2226003Z 2634 │ │ fiber.interruptUnsafe();
2026-10-24T19:50:25.2226099Z 2635 │ │ return true;
2026-10-24T19:50:25.2226180Z 2636 │ │ },
2026-10-24T19:50:25.2226259Z 2637 │ │ };
2026-10-24T19:50:25.2226329Z 2638 │ │
2026-10-24T19:50:25.2226450Z 2639 │ │ const input: UsageSummaryInput = {
2026-10-24T19:50:25.2226543Z 2640 │ │ ...WINDOW,
2026-10-24T19:50:25.2226731Z 2641 │ │ sinceDay: UsageDay.make("2026-09-01"),
2026-10-24T19:50:25.2226958Z 2642 │ │ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2026-10-24T19:50:25.2227037Z 2643 │ │ };
2026-10-24T19:50:25.2227148Z 2644 │ │ const first = yield* service
2026-10-24T19:50:25.2227252Z 2645 │ │ .readSummary(input)
2026-10-24T19:50:25.2227341Z 2646 │ │ .pipe(
2026-10-24T19:50:25.2227437Z 2647 │ │ Effect.exit,
2026-10-24T19:50:25.2227594Z 2648 │ │ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T19:50:25.2227696Z 2649 │ │ Effect.forkChild,
2026-10-24T19:50:25.2227783Z 2650 │ │ );
2026-10-24T19:50:25.2227888Z 2651 │ │ requestFiber = first;
2026-10-24T19:50:25.2227993Z 2652 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2228094Z 2653 │ │ dispatcher.flush();
2026-10-24T19:50:25.2228165Z 2654 │ │
2026-10-24T19:50:25.2228318Z 2655 │ │ const second = yield* service.readSummary(input).pipe(
2026-10-24T19:50:25.2228415Z 2656 │ │ Effect.match({
2026-10-24T19:50:25.2228537Z 2657 │ │ onFailure: (error) => error.reason,
2026-10-24T19:50:25.2228659Z 2658 │ │ onSuccess: () => "success" as const,
2026-10-24T19:50:25.2228742Z 2659 │ │ }),
2026-10-24T19:50:25.2228904Z 2660 │ │ Effect.provideService(Scheduler.Scheduler, scheduler),
2026-10-24T19:50:25.2229007Z 2661 │ │ Effect.forkChild,
2026-10-24T19:50:25.2229087Z 2662 │ │ );
2026-10-24T19:50:25.2229191Z 2663 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2229293Z 2664 │ │ dispatcher.flush();
2026-10-24T19:50:25.2229417Z 2665 │ │ const secondExit = second.pollUnsafe();
2026-10-24T19:50:25.2229531Z 2666 │ │ if (secondExit === undefined) {
2026-10-24T19:50:25.2229645Z 2667 │ │ second.interruptUnsafe();
2026-10-24T19:50:25.2229755Z 2668 │ │ orphanedAt = interruptAt;
2026-10-24T19:50:25.2229841Z 2669 │ │ break;
2026-10-24T19:50:25.2229925Z 2670 │ │ }
2026-10-24T19:50:25.2230046Z 2671 │ │ if (Exit.isFailure(secondExit)) {
2026-10-24T19:50:25.2230203Z 2672 │ │ assert.fail("the matching request fiber was interrupted");
2026-10-24T19:50:25.2230281Z 2673 │ │ }
2026-10-24T19:50:25.2230431Z 2674 │ │ assert.strictEqual(secondExit.value, "invalidWindow");
2026-10-24T19:50:25.2230565Z 2675 │ ╰─▶ }
2026-10-24T19:50:25.2230619Z 2676 │
2026-10-24T19:50:25.2230670Z ╰────
2026-10-24T19:50:25.2230674Z
2026-10-24T19:50:25.2230886Z ⚠ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
2026-10-24T19:50:25.2231070Z ╭─[apps/server/src/scheduledTasks/Schedule.ts:79:10]
2026-10-24T19:50:25.2231152Z 78 │
2026-10-24T19:50:25.2231289Z 79 │ function describeSchedule(schedule: ScheduledTaskSchedule): string {
2026-10-24T19:50:25.2231375Z · ────────┬───────
2026-10-24T19:50:25.2231524Z · ╰── 'describeSchedule' is declared here
2026-10-24T19:50:25.2231631Z 80 │ if (schedule.type === "webhook") return "On webhook";
2026-10-24T19:50:25.2231683Z ╰────
2026-10-24T19:50:25.2231785Z help: Consider removing this declaration.
2026-10-24T19:50:25.2231788Z
2026-10-24T19:50:25.2231976Z ⚠ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T19:50:25.2232090Z ╭─[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T19:50:25.2232146Z 7 │ () =>
2026-10-24T19:50:25.2232218Z 8 │ Gesture.Hover()
2026-10-24T19:50:25.2232298Z · ──┬──
2026-10-24T19:50:25.2232432Z · ╰── `Hover` may be a component
2026-10-24T19:50:25.2232505Z 9 │ .manualActivation(true)
2026-10-24T19:50:25.2232555Z ╰────
2026-10-24T19:50:25.2232840Z 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-24T19:50:25.2233296Z 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-24T19:50:25.2233299Z
2026-10-24T19:50:25.2233508Z ⚠ eslint(no-unused-vars): Identifier 'HookForwarder' is imported but never used.
2026-10-24T19:50:25.2233615Z ╭─[infra/relay/src/http/Api.ts:69:13]
2026-10-24T19:50:25.2233761Z 68 │ import * as EnvironmentLinks from "../environments/EnvironmentLinks.ts";
2026-10-24T19:50:25.2233874Z 69 │ import * as HookForwarder from "../hooks/HookForwarder.ts";
2026-10-24T19:50:25.2233988Z · ──────┬──────
2026-10-24T19:50:25.2234132Z · ╰── 'HookForwarder' is imported here
2026-10-24T19:50:25.2234234Z 70 │ import * as HeldHooks from "../hooks/HeldHooks.ts";
2026-10-24T19:50:25.2234285Z ╰────
2026-10-24T19:50:25.2234382Z help: Consider removing this import.
2026-10-24T19:50:25.2234385Z
2026-10-24T19:50:25.2234654Z ⚠ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2234776Z ╭─[apps/server/src/usage/UsageService.ts:169:7]
2026-10-24T19:50:25.2234832Z 168 │
2026-10-24T19:50:25.2234910Z 169 │ const layerTest = Layer.succeed(
2026-10-24T19:50:25.2234983Z · ────┬────
2026-10-24T19:50:25.2235114Z · ╰── 'layerTest' is declared here
2026-10-24T19:50:25.2235179Z 170 │ UsageService,
2026-10-24T19:50:25.2235229Z ╰────
2026-10-24T19:50:25.2235331Z help: Consider removing this declaration.
2026-10-24T19:50:25.2235334Z
2026-10-24T19:50:25.2235809Z ⚠ 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-24T19:50:25.2236050Z ╭─[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
2026-10-24T19:50:25.2236157Z 520 │ })).delivery;
2026-10-24T19:50:25.2236355Z 521 │ ╭─▶ while (delivery.outcome === "accepted") {
2026-10-24T19:50:25.2236468Z 522 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2236615Z 523 │ │ delivery = (yield* service.getWebhookDelivery({
2026-10-24T19:50:25.2236714Z 524 │ │ id: task.id,
2026-10-24T19:50:25.2236828Z 525 │ │ deliveryId: deliveryId!,
2026-10-24T19:50:25.2236924Z 526 │ │ })).delivery;
2026-10-24T19:50:25.2237061Z 527 │ ╰─▶ }
2026-10-24T19:50:25.2237183Z 528 │ assert.equal(delivery.outcome, "dispatch_failed");
2026-10-24T19:50:25.2237241Z ╰────
2026-10-24T19:50:25.2237243Z
2026-10-24T19:50:25.2237472Z ⚠ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T19:50:25.2237595Z ╭─[apps/server/src/terminal/Manager.test.ts:731:31]
2026-10-24T19:50:25.2237651Z 730 │ );
2026-10-24T19:50:25.2237823Z 731 │ const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
2026-10-24T19:50:25.2237919Z · ──────
2026-10-24T19:50:25.2238033Z 732 │ expect(snapshot?.history).toBe("aa😀\rEND");
2026-10-24T19:50:25.2238084Z ╰────
2026-10-24T19:50:25.2238259Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T19:50:25.2238262Z
2026-10-24T19:50:25.2238481Z ⚠ eslint(no-unsafe-optional-chaining): Unsafe usage of optional chaining
2026-10-24T19:50:25.2238656Z ╭─[apps/server/src/orchestration-v2/ThreadLaunchService.test.ts:1783:8]
2026-10-24T19:50:25.2238724Z 1782 │ assert.equal(
2026-10-24T19:50:25.2238872Z 1783 │ (stored.context?.records[0] as { attachmentId: string }).attachmentId,
2026-10-24T19:50:25.2238975Z · ──────────────────────────
2026-10-24T19:50:25.2239055Z 1784 │ stored.attachments[0]?.id,
2026-10-24T19:50:25.2239107Z ╰────
2026-10-24T19:50:25.2239279Z help: If this short-circuits with 'undefined' the evaluation will throw TypeError
2026-10-24T19:50:25.2239282Z
2026-10-24T19:50:25.2239570Z ⚠ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2239723Z ╭─[apps/server/src/orchestration-v2/Orchestrator.ts:12395:7]
2026-10-24T19:50:25.2239781Z 12394 │
2026-10-24T19:50:25.2239925Z 12395 │ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
2026-10-24T19:50:25.2240011Z · ────────┬───────
2026-10-24T19:50:25.2240160Z · ╰── 'layerUnavailable' is declared here
2026-10-24T19:50:25.2240228Z 12396 │ OrchestratorV2,
2026-10-24T19:50:25.2240280Z ╰────
2026-10-24T19:50:25.2240385Z help: Consider removing this declaration.
2026-10-24T19:50:25.2240388Z
2026-10-24T19:50:25.2240688Z ⚠ eslint(no-unused-vars): Variable 'layerFromProviderAdapter' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2240909Z ╭─[apps/server/src/orchestration-v2/ProviderAdapterRegistry.ts:346:7]
2026-10-24T19:50:25.2240994Z 345 │
2026-10-24T19:50:25.2241096Z 346 │ const layerFromProviderAdapter: Layer.Layer<
2026-10-24T19:50:25.2241190Z · ────────────┬───────────
2026-10-24T19:50:25.2241360Z · ╰── 'layerFromProviderAdapter' is declared here
2026-10-24T19:50:25.2241438Z 347 │ ProviderAdapterRegistryV2,
2026-10-24T19:50:25.2241488Z ╰────
2026-10-24T19:50:25.2241590Z help: Consider removing this declaration.
2026-10-24T19:50:25.2241594Z
2026-10-24T19:50:25.2241797Z ⚠ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
2026-10-24T19:50:25.2241966Z ╭─[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
2026-10-24T19:50:25.2242040Z 3 │ AuthProvidersManageScope,
2026-10-24T19:50:25.2242116Z 4 │ type AuthSessionState,
2026-10-24T19:50:25.2242202Z · ────────┬───────
2026-10-24T19:50:25.2242349Z · ╰── 'AuthSessionState' is imported here
2026-10-24T19:50:25.2242415Z 5 │ type EnvironmentId,
2026-10-24T19:50:25.2242464Z ╰────
2026-10-24T19:50:25.2242561Z help: Consider removing this import.
2026-10-24T19:50:25.2242564Z
2026-10-24T19:50:25.2242825Z ⚠ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T19:50:25.2242967Z ╭─[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
2026-10-24T19:50:25.2243019Z 150 │
2026-10-24T19:50:25.2243083Z 151 │ useEffect(() => {
2026-10-24T19:50:25.2243154Z · ────┬────
2026-10-24T19:50:25.2243290Z · ╰── This is the containing effect
2026-10-24T19:50:25.2243376Z 152 │ if (!controlledSelectedPath) {
2026-10-24T19:50:25.2243436Z 153 │ return;
2026-10-24T19:50:25.2243492Z 154 │ }
2026-10-24T19:50:25.2243573Z 155 │ setExpandedPaths((current) => {
2026-10-24T19:50:25.2243653Z · ────────┬───────
2026-10-24T19:50:25.2243827Z · ╰── Avoid calling setState() directly within an effect
2026-10-24T19:50:25.2243984Z 156 │ const ancestors = ancestorPaths(controlledSelectedPath);
2026-10-24T19:50:25.2244038Z ╰────
2026-10-24T19:50:25.2244659Z 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-24T19:50:25.2244990Z 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-24T19:50:25.2244993Z
2026-10-24T19:50:25.2245222Z ⚠ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
2026-10-24T19:50:25.2245397Z ╭─[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:1998:15]
2026-10-24T19:50:25.2245465Z 1997 │ assert.equal(
2026-10-24T19:50:25.2245612Z 1998 │ items.filter((item) => item.type === "assistant_message").at(-1)?.text,
2026-10-24T19:50:25.2245690Z · ──────
2026-10-24T19:50:25.2245767Z 1999 │ "authoritative answer",
2026-10-24T19:50:25.2245820Z ╰────
2026-10-24T19:50:25.2246048Z help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
2026-10-24T19:50:25.2246084Z
2026-10-24T19:50:25.2246825Z ⚠ 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-24T19:50:25.2246997Z ╭─[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:3951:7]
2026-10-24T19:50:25.2247181Z 3950 │ const closeFiber = yield* Scope.close(sessionScope, Exit.void).pipe(Effect.forkScoped);
2026-10-24T19:50:25.2247387Z 3951 │ ╭─▶ while (!responseLifecycle.includes("failed")) {
2026-10-24T19:50:25.2247494Z 3952 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2247634Z 3953 │ ╰─▶ }
2026-10-24T19:50:25.2247757Z 3954 │ const responseExit = yield* Fiber.join(responseFiber);
2026-10-24T19:50:25.2247810Z ╰────
2026-10-24T19:50:25.2247812Z
2026-10-24T19:50:25.2248283Z ⚠ 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-24T19:50:25.2248452Z ╭─[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6062:9]
2026-10-24T19:50:25.2248541Z 6061 │ .pipe(Effect.forkScoped);
2026-10-24T19:50:25.2248726Z 6062 │ ╭─▶ while (promptGates.length < 1) {
2026-10-24T19:50:25.2248843Z 6063 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2248980Z 6064 │ ╰─▶ }
2026-10-24T19:50:25.2249152Z 6065 │ assert.isDefined(sessionUpdateHandler, "session update handler must be wired");
2026-10-24T19:50:25.2249205Z ╰────
2026-10-24T19:50:25.2249207Z
2026-10-24T19:50:25.2249677Z ⚠ 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-24T19:50:25.2249847Z ╭─[apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts:6197:9]
2026-10-24T19:50:25.2249932Z 6196 │ .pipe(Effect.forkScoped);
2026-10-24T19:50:25.2250120Z 6197 │ ╭─▶ while (promptGates.length < 2) {
2026-10-24T19:50:25.2250230Z 6198 │ │ yield* Effect.yieldNow;
2026-10-24T19:50:25.2250365Z 6199 │ ╰─▶ }
2026-10-24T19:50:25.2250529Z 6200 │ if (sessionUpdateHandler === undefined || capturedMutation.current === null) {
2026-10-24T19:50:25.2250580Z ╰────
2026-10-24T19:50:25.2250583Z
2026-10-24T19:50:25.2250845Z ⚠ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2251012Z ╭─[apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:10602:7]
2026-10-24T19:50:25.2251064Z 10601 │
2026-10-24T19:50:25.2251138Z 10602 │ const layer: Layer.Layer<
2026-10-24T19:50:25.2251211Z · ──┬──
2026-10-24T19:50:25.2251417Z · ╰── 'layer' is declared here
2026-10-24T19:50:25.2251551Z 10603 │ ProviderAdapter.ProviderAdapterV2,
2026-10-24T19:50:25.2251604Z ╰────
2026-10-24T19:50:25.2251707Z help: Consider removing this declaration.
2026-10-24T19:50:25.2251709Z
2026-10-24T19:50:25.2251912Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.2252059Z ╭─[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
2026-10-24T19:50:25.2252157Z 256 │ return () => cancelAnimationFrame(frame);
2026-10-24T19:50:25.2252236Z 257 │ }, [props.path, targetIndex]);
2026-10-24T19:50:25.2252312Z · ─────┬────
2026-10-24T19:50:25.2252457Z · ╰── Unnecessary dependency `props.path`
2026-10-24T19:50:25.2252518Z 258 │
2026-10-24T19:50:25.2252576Z ╰────
2026-10-24T19:50:25.2252881Z 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-24T19:50:25.2253196Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2253200Z
2026-10-24T19:50:25.2253394Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.2253545Z ╭─[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
2026-10-24T19:50:25.2253619Z 292 │ <SourceText
2026-10-24T19:50:25.2253718Z 293 │ key={`${index}:${tokenIndex}`}
2026-10-24T19:50:25.2253841Z · ──────────────────────────────
2026-10-24T19:50:25.2253945Z 294 │ style={{
2026-10-24T19:50:25.2253997Z ╰────
2026-10-24T19:50:25.2254144Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.2254147Z
2026-10-24T19:50:25.2254340Z ⚠ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T19:50:25.2254489Z ╭─[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
2026-10-24T19:50:25.2254554Z 308 │ return (
2026-10-24T19:50:25.2254637Z 309 │ <SourceText key={index}>
2026-10-24T19:50:25.2254736Z · ───────────
2026-10-24T19:50:25.2254802Z 310 │ {body}
2026-10-24T19:50:25.2254852Z ╰────
2026-10-24T19:50:25.2255059Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T19:50:25.2255206Z
2026-10-24T19:50:25.2255544Z ⚠ eslint(no-unused-vars): Variable 'layerCodexAppServerClientFactoryCommand' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2255711Z ╭─[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1444:7]
2026-10-24T19:50:25.2255766Z 1443 │
2026-10-24T19:50:25.2255882Z 1444 │ const layerCodexAppServerClientFactoryCommand = (
2026-10-24T19:50:25.2256000Z · ───────────────────┬───────────────────
2026-10-24T19:50:25.2256209Z · ╰── 'layerCodexAppServerClientFactoryCommand' is declared here
2026-10-24T19:50:25.2256328Z 1445 │ options: CodexClient.CodexAppServerClientOptions & {
2026-10-24T19:50:25.2256379Z ╰────
2026-10-24T19:50:25.2256487Z help: Consider removing this declaration.
2026-10-24T19:50:25.2256495Z
2026-10-24T19:50:25.2256756Z ⚠ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T19:50:25.2256918Z ╭─[apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts:1680:7]
2026-10-24T19:50:25.2256971Z 1679 │
2026-10-24T19:50:25.2257041Z 1680 │ const layer: Layer.Layer<
2026-10-24T19:50:25.2257112Z · ──┬──
2026-10-24T19:50:25.2257238Z · ╰── 'layer' is declared here
2026-10-24T19:50:25.2257330Z 1681 │ ProviderAdapter.ProviderAdapterV2,
2026-10-24T19:50:25.2257380Z ╰────
2026-10-24T19:50:25.2257481Z help: Consider removing this declaration.
2026-10-24T19:50:25.2257483Z
2026-10-24T19:50:25.2257776Z ⚠ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T19:50:25.2257937Z ╭─[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T19:50:25.2257994Z 162 │ keys,
2026-10-24T19:50:25.2258065Z 163 │ overridingProjects = [],
2026-10-24T19:50:25.2258147Z · ──
2026-10-24T19:50:25.2258214Z 164 │ onClearOverrides,
2026-10-24T19:50:25.2258265Z ╰────
2026-10-24T19:50:25.2258587Z 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-24T19:50:25.2258590Z
2026-10-24T19:50:25.2259071Z ⚠ 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-24T19:50:25.2259255Z ╭─[apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
2026-10-24T19:50:25.2259326Z 222 │ let idlePasses = 0;
2026-10-24T19:50:25.2259470Z 223 │ ╭─▶ for (;;) {
2026-10-24T19:50:25.2259607Z 224 │ │ yield* Effect.promise(() => Promise.resolve());
2026-10-24T19:50:25.2259751Z 225 │ │ const pending = backgroundRuntime.pending.shift();
2026-10-24T19:50:25.2259847Z 226 │ │ if (!pending) {
2026-10-24T19:50:25.2259939Z 227 │ │ idlePasses++;
2026-10-24T19:50:25.2260044Z 228 │ │ if (idlePasses >= 3) {
2026-10-24T19:50:25.2260184Z 229 │ │ return;
2026-10-24T19:50:25.2260300Z 230 │ │ }
2026-10-24T19:50:25.2260385Z 231 │ │ continue;
2026-10-24T19:50:25.2260460Z 232 │ │ }
2026-10-24T19:50:25.2260553Z 233 │ │ idlePasses = 0;
2026-10-24T19:50:25.2260669Z 234 │ │ const exit = yield* Effect.exit(
2026-10-24T19:50:25.2260882Z 235 │ │ pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
2026-10-24T19:50:25.2260960Z 236 │ │ );
2026-10-24T19:50:25.2261066Z 237 │ │ yield* Effect.sync(() => {
2026-10-24T19:50:25.2261171Z 238 │ │ pending.resolve(exit);
2026-10-24T19:50:25.2261253Z 239 │ │ });
2026-10-24T19:50:25.2261384Z 240 │ ╰─▶ }
2026-10-24T19:50:25.2261441Z 241 │ },
2026-10-24T19:50:25.2261492Z ╰────
2026-10-24T19:50:25.2261494Z
2026-10-24T19:50:25.2261640Z ⚠ react(refs): Cannot access refs during render
2026-10-24T19:50:25.2261795Z ╭─[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
2026-10-24T19:50:25.2261853Z 493 │ >
2026-10-24T19:50:25.2261931Z 494 │ {props.children(close)}
2026-10-24T19:50:25.2262019Z · ──┬──
2026-10-24T19:50:25.2262183Z · ╰── Cannot access ref value during render
2026-10-24T19:50:25.2262259Z 495 │ </ReanimatedSwipeable>
2026-10-24T19:50:25.2262311Z ╰────
2026-10-24T19:50:25.2262796Z 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-24T19:50:25.2263094Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T19:50:25.2263097Z
2026-10-24T19:50:25.2263328Z ⚠ eslint(no-unused-vars): Type 'EnvironmentThreadSearchMatch' is imported but never used.
2026-10-24T19:50:25.2263455Z ╭─[apps/mobile/src/features/home/HomeScreen.tsx:15:8]
2026-10-24T19:50:25.2263525Z 14 │ threadSearchMatchKey,
2026-10-24T19:50:25.2263609Z 15 │ type EnvironmentThreadSearchMatch,
2026-10-24T19:50:25.2263718Z · ──────────────┬─────────────
2026-10-24T19:50:25.2263936Z · ╰── 'EnvironmentThreadSearchMatch' is imported here
2026-10-24T19:50:25.2264046Z 16 │ } from "@t3tools/client-runtime/state/thread-search";
2026-10-24T19:50:25.2264096Z ╰────
2026-10-24T19:50:25.2264194Z help: Consider removing this import.
2026-10-24T19:50:25.2264197Z
2026-10-24T19:50:25.2264399Z ⚠ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T19:50:25.2264528Z ╭─[apps/mobile/src/features/home/HomeScreen.tsx:527:25]
2026-10-24T19:50:25.2264657Z 526 │ // range) the boundary string is identical and the chain would die.
2026-10-24T19:50:25.2264749Z 527 │ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-24T19:50:25.2264849Z · ───────┬──────
2026-10-24T19:50:25.2265074Z · ╰── Unnecessary dependency `snoozeWakeTick`
2026-10-24T19:50:25.2265243Z 528 │ const v2SearchQuery = props.searchQuery.trim().toLocaleLowerCase();
2026-10-24T19:50:25.2265294Z ╰────
2026-10-24T19:50:25.2265594Z 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-24T19:50:25.2265909Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T19:50:25.2265912Z
2026-10-24T19:50:25.2266082Z ⚠ react(purity): Cannot call impure function during render
2026-10-24T19:50:25.2266209Z ╭─[apps/mobile/src/features/home/HomeScreen.tsx:518:53]
2026-10-24T19:50:25.2266299Z 517 │ if (Number.isNaN(wakeAtMs)) return;
2026-10-24T19:50:25.2266461Z 518 │ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-24T19:50:25.2266588Z · ─────┬────
2026-10-24T19:50:25.2266756Z · ╰── Cannot call impure function
2026-10-24T19:50:25.2266836Z 519 │ const id = setTimeout(() => {
2026-10-24T19:50:25.2266886Z ╰────
2026-10-24T19:50:25.2267174Z help: `Date.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T19:50:25.2267471Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T19:50:25.2267480Z
2026-10-24T19:50:25.2267566Z Found 0 errors and 367 warnings in 5477 files (6.0s, 8 threads)
2026-10-24T19:50:25.2721503Z Post job cleanup.
2026-10-24T19:50:25.3354088Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T19:50:25.3430046Z Post job cleanup.
2026-10-24T19:50:25.4253471Z ##[start-action display=Cache full pnpm store;id=__3cb0b5a0-99dd-466d-942d-2b46cf806664.__actions_cache]
2026-10-24T19:50:25.4576184Z Post job cleanup.
2026-10-24T19:50:25.5205336Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fa50cf9b003d547cd32552f61b874eb4abe5dace3fdb4b1abd9610da2da24074, not saving cache.
2026-10-24T19:50:25.5241400Z ##[end-action id=__3cb0b5a0-99dd-466d-942d-2b46cf806664.__actions_cache;outcome=success;conclusion=success;duration_ms=98]
2026-10-24T19:50:25.5242736Z ##[start-action display=Cache Vite+;id=__3cb0b5a0-99dd-466d-942d-2b46cf806664.vp_cache]
2026-10-24T19:50:25.5267847Z Post job cleanup.
2026-10-24T19:50:25.5908802Z Cache hit occurred on the primary key vite-plus-home-v2-Linux-X64-1.3.0-node26.12.1-pnpm@12.14.0, not saving cache.
2026-10-24T19:50:25.5944615Z ##[end-action id=__3cb0b5a0-99dd-466d-942d-2b46cf806664.vp_cache;outcome=success;conclusion=success;duration_ms=70]
2026-10-24T19:50:25.5975576Z Post job cleanup.
2026-10-24T19:50:25.6392786Z [command]/usr/local/bin/git version
2026-10-24T19:50:25.6423535Z git version 2.55.0
2026-10-24T19:50:25.6441258Z Temporarily overriding HOME='/home/runner/_work/_temp/9232ecfb-87b8-4140-bf64-9b5aafb3d816' before making global git config changes
2026-10-24T19:50:25.6441616Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T19:50:25.6444413Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T19:50:25.6468881Z Removing SSH command configuration
2026-10-24T19:50:25.6471874Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T19:50:25.6496901Z [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-24T19:50:25.6632044Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T19:50:25.6650424Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T19:50:25.6696225Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T19:50:25.6709235Z ##[group]Run '/job_completed.sh'
2026-10-24T19:50:25.6715280Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T19:50:25.6715452Z env:
2026-10-24T19:50:25.6715567Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 157
2026-10-24T19:50:25.6715717Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 352
2026-10-24T19:50:25.6715860Z BLACKSMITH_CHECK_RUN_ID: 120970600013
2026-10-24T19:50:25.6716004Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T19:50:25.6716155Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T19:50:25.6716291Z ##[endgroup]
2026-10-24T19:50:25.6795078Z Docker container cache not activated, skipping hash computation.
2026-10-24T19:50:25.7071947Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T19:50:25.7593835Z Cleaning up orphan processes