GitHub check
256 KB of 598 KB loaded Download the full log (598 KB)
342 KB of earlier output not loaded
Consider moving the modification into the hook where the value is constructed
2026-10-24T02:58:54.8964170Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8964172Z
2026-10-24T02:58:54.8964323Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.8964528Z โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
2026-10-24T02:58:54.8964726Z 37 โ const { renderedInspectorWidth } = props;
2026-10-24T02:58:54.8964856Z 38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
2026-10-24T02:58:54.8964943Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.8965091Z ยท โฐโโ `renderedContentWidth` originates here
2026-10-24T02:58:54.8965144Z 39 โ
2026-10-24T02:58:54.8965224Z 40 โ const onClosed = props.onClosed;
2026-10-24T02:58:54.8965290Z 41 โ useEffect(() => {
2026-10-24T02:58:54.8965375Z 42 โ inspectorProgress.value = withTiming(
2026-10-24T02:58:54.8965449Z 43 โ inspectorVisible ? 1 : 0,
2026-10-24T02:58:54.8965520Z 44 โ WORKSPACE_PANE_TIMING,
2026-10-24T02:58:54.8965586Z 45 โ (finished) => {
2026-10-24T02:58:54.8965727Z 46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
2026-10-24T02:58:54.8965801Z 47 โ runOnJS(onClosed)();
2026-10-24T02:58:54.8965856Z 48 โ }
2026-10-24T02:58:54.8965911Z 49 โ },
2026-10-24T02:58:54.8965962Z 50 โ );
2026-10-24T02:58:54.8966091Z 51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
2026-10-24T02:58:54.8966168Z 52 โ renderedInspectorWidth.set(
2026-10-24T02:58:54.8966307Z 53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
2026-10-24T02:58:54.8966361Z 54 โ );
2026-10-24T02:58:54.8966415Z 55 โ }, [
2026-10-24T02:58:54.8966482Z 56 โ inspectorProgress,
2026-10-24T02:58:54.8966546Z 57 โ inspectorVisible,
2026-10-24T02:58:54.8966609Z 58 โ inspectorWidth,
2026-10-24T02:58:54.8966669Z 59 โ onClosed,
2026-10-24T02:58:54.8966747Z 60 โ renderedInspectorWidth,
2026-10-24T02:58:54.8966805Z 61 โ resizing,
2026-10-24T02:58:54.8966858Z 62 โ ]);
2026-10-24T02:58:54.8966909Z 63 โ
2026-10-24T02:58:54.8966972Z 64 โ useEffect(() => {
2026-10-24T02:58:54.8967061Z 65 โ const targetWidth = inspectorWidth ?? 0;
2026-10-24T02:58:54.8967146Z 66 โ if (!inspectorVisible || resizing) {
2026-10-24T02:58:54.8967242Z 67 โ renderedContentWidth.value = targetWidth;
2026-10-24T02:58:54.8967327Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.8967482Z ยท โฐโโ `renderedContentWidth` cannot be modified
2026-10-24T02:58:54.8967540Z 68 โ return;
2026-10-24T02:58:54.8967591Z โฐโโโโ
2026-10-24T02:58:54.8967846Z 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-24T02:58:54.8968155Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8968160Z
2026-10-24T02:58:54.8968413Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.8968580Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:7]
2026-10-24T02:58:54.8968633Z 118 โ
2026-10-24T02:58:54.8968695Z 119 โ useEffect(() => {
2026-10-24T02:58:54.8968766Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.8968895Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.8968977Z 120 โ if (orientationSettled) return;
2026-10-24T02:58:54.8969138Z 121 โ const orientation = getNativeShowcaseOrientation();
2026-10-24T02:58:54.8969240Z 122 โ if (orientation === null) {
2026-10-24T02:58:54.8969321Z 123 โ setOrientationSettled(true);
2026-10-24T02:58:54.8969409Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.8969576Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.8969636Z 124 โ return;
2026-10-24T02:58:54.8969689Z โฐโโโโ
2026-10-24T02:58:54.8970302Z 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-24T02:58:54.8970618Z 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-24T02:58:54.8970625Z
2026-10-24T02:58:54.8970873Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.8971041Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:304:7]
2026-10-24T02:58:54.8971093Z 292 โ
2026-10-24T02:58:54.8971158Z 293 โ useEffect(() => {
2026-10-24T02:58:54.8971226Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.8971353Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.8971410Z 294 โ if (
2026-10-24T02:58:54.8971475Z 295 โ scene === null ||
2026-10-24T02:58:54.8971552Z 296 โ requestedScene === null ||
2026-10-24T02:58:54.8971627Z 297 โ scene !== requestedScene ||
2026-10-24T02:58:54.8971694Z 298 โ !hasFixture ||
2026-10-24T02:58:54.8971768Z 299 โ !orientationSettled ||
2026-10-24T02:58:54.8971834Z 300 โ !themeApplied ||
2026-10-24T02:58:54.8971949Z 301 โ (scene === "agent-activity" && !agentActivityStaged) ||
2026-10-24T02:58:54.8972080Z 302 โ !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
2026-10-24T02:58:54.8972134Z 303 โ ) {
2026-10-24T02:58:54.8972203Z 304 โ setReadyScene(null);
2026-10-24T02:58:54.8972280Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.8972445Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.8972505Z 305 โ return;
2026-10-24T02:58:54.8972555Z โฐโโโโ
2026-10-24T02:58:54.8973141Z 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-24T02:58:54.8973454Z 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-24T02:58:54.8973457Z
2026-10-24T02:58:54.8973719Z โ eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.8973883Z โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:128:9]
2026-10-24T02:58:54.8973952Z 127 โ let cancelled = false;
2026-10-24T02:58:54.8974041Z 128 โ let lastOutcome: string | null = null;
2026-10-24T02:58:54.8974169Z ยท โโโโโโฌโโโโโ
2026-10-24T02:58:54.8974328Z ยท โฐโโ 'lastOutcome' is declared here
2026-10-24T02:58:54.8974502Z 129 โ void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
2026-10-24T02:58:54.8974552Z โฐโโโโ
2026-10-24T02:58:54.8974655Z help: Consider removing this declaration.
2026-10-24T02:58:54.8974658Z
2026-10-24T02:58:54.8974840Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T02:58:54.8974953Z โญโ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
2026-10-24T02:58:54.8975010Z 7 โ () =>
2026-10-24T02:58:54.8975075Z 8 โ Gesture.Hover()
2026-10-24T02:58:54.8975148Z ยท โโโฌโโ
2026-10-24T02:58:54.8975281Z ยท โฐโโ `Hover` may be a component
2026-10-24T02:58:54.8975360Z 9 โ .manualActivation(true)
2026-10-24T02:58:54.8975412Z โฐโโโโ
2026-10-24T02:58:54.8975685Z 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-24T02:58:54.8976125Z 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-24T02:58:54.8976127Z
2026-10-24T02:58:54.8976305Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.8976489Z โญโ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
2026-10-24T02:58:54.8976556Z 115 โ return [...commands];
2026-10-24T02:58:54.8976691Z 116 โ }, [activeThreadRef, pathname, registrationVersion, navigation]);
2026-10-24T02:58:54.8976808Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.8976988Z ยท โฐโโ Unnecessary dependency `registrationVersion`
2026-10-24T02:58:54.8977040Z 117 โ
2026-10-24T02:58:54.8977089Z โฐโโโโ
2026-10-24T02:58:54.8977394Z 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-24T02:58:54.8977695Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.8977698Z
2026-10-24T02:58:54.8977909Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T02:58:54.8978032Z โญโ[apps/mobile/src/lib/markdownDocument.ts:259:28]
2026-10-24T02:58:54.8978128Z 258 โ visit(parser.parse(markdown), false, false);
2026-10-24T02:58:54.8978211Z 259 โ for (const edit of edits.reverse())
2026-10-24T02:58:54.8978304Z ยท โโโโโโโ
2026-10-24T02:58:54.8978465Z 260 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T02:58:54.8978514Z โฐโโโโ
2026-10-24T02:58:54.8978768Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T02:58:54.8978771Z
2026-10-24T02:58:54.8978975Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T02:58:54.8979144Z โญโ[apps/mobile/src/lib/markdownDocument.ts:290:28]
2026-10-24T02:58:54.8979256Z 289 โ visit(parser.parse(markdown));
2026-10-24T02:58:54.8979338Z 290 โ for (const edit of edits.reverse())
2026-10-24T02:58:54.8979645Z ยท โโโโโโโ
2026-10-24T02:58:54.8979804Z 291 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
2026-10-24T02:58:54.8979891Z โฐโโโโ
2026-10-24T02:58:54.8980154Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T02:58:54.8980157Z
2026-10-24T02:58:54.8980360Z โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
2026-10-24T02:58:54.8980480Z โญโ[apps/mobile/src/lib/markdownDocument.ts:344:38]
2026-10-24T02:58:54.8980565Z 343 โ visit(parser.parse(markdown));
2026-10-24T02:58:54.8980668Z 344 โ for (const lineStart of lineStarts.reverse()) {
2026-10-24T02:58:54.8980768Z ยท โโโโโโโ
2026-10-24T02:58:54.8980927Z 345 โ // The header row may be a lazy line without its container markers (`>` or list indent),
2026-10-24T02:58:54.8980978Z โฐโโโโ
2026-10-24T02:58:54.8981227Z help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
2026-10-24T02:58:54.8981229Z
2026-10-24T02:58:54.8981479Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.8981627Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:400:5]
2026-10-24T02:58:54.8981681Z 398 โ
2026-10-24T02:58:54.8981751Z 399 โ useEffect(() => {
2026-10-24T02:58:54.8981825Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.8981952Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.8982042Z 400 โ setInspectorSelection((current) => {
2026-10-24T02:58:54.8982126Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.8982291Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.8982393Z 401 โ if (props.renderInspector === undefined) {
2026-10-24T02:58:54.8982444Z โฐโโโโ
2026-10-24T02:58:54.8983087Z 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-24T02:58:54.8983442Z 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-24T02:58:54.8983444Z
2026-10-24T02:58:54.8983651Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-24T02:58:54.8983801Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:528:24]
2026-10-24T02:58:54.8983959Z 527 โ const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
2026-10-24T02:58:54.8984124Z 528 โ โญโโถ const GitInspector = () => (
2026-10-24T02:58:54.8984220Z 529 โ โ <GitOverviewSheet
2026-10-24T02:58:54.8984346Z 530 โ โ headerInset={inspectorHeaderInset}
2026-10-24T02:58:54.8984452Z 531 โ โ presentation="inspector"
2026-10-24T02:58:54.8984626Z 532 โ โ route={{ params: { environmentId: environmentId!, threadId: threadId! } }}
2026-10-24T02:58:54.8984701Z 533 โ โ />
2026-10-24T02:58:54.8984828Z 534 โ โฐโโถ );
2026-10-24T02:58:54.8984908Z 535 โ const FilesInspector = () =>
2026-10-24T02:58:54.8984958Z โฐโโโโ
2026-10-24T02:58:54.8985173Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-24T02:58:54.8985176Z
2026-10-24T02:58:54.8985380Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-24T02:58:54.8985533Z โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:535:26]
2026-10-24T02:58:54.8985593Z 534 โ );
2026-10-24T02:58:54.8985754Z 535 โ โญโโถ const FilesInspector = () =>
2026-10-24T02:58:54.8985905Z 536 โ โ selectedThread !== null && selectedThreadCwd !== null ? (
2026-10-24T02:58:54.8986010Z 537 โ โ <ThreadFileNavigatorPane
2026-10-24T02:58:54.8986113Z 538 โ โ cwd={selectedThreadCwd}
2026-10-24T02:58:54.8986247Z 539 โ โ environmentId={selectedThread.environmentId}
2026-10-24T02:58:54.8986368Z 540 โ โ headerInset={inspectorHeaderInset}
2026-10-24T02:58:54.8986511Z 541 โ โ projectName={selectedThreadProject?.title ?? "Files"}
2026-10-24T02:58:54.8986616Z 542 โ โ selectedPath={null}
2026-10-24T02:58:54.8986744Z 543 โ โ onSelectFile={handleSelectInspectorFile}
2026-10-24T02:58:54.8986820Z 544 โ โ />
2026-10-24T02:58:54.8986953Z 545 โ โฐโโถ ) : null;
2026-10-24T02:58:54.8987102Z 546 โ const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
2026-10-24T02:58:54.8987152Z โฐโโโโ
2026-10-24T02:58:54.8987364Z help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
2026-10-24T02:58:54.8987366Z
2026-10-24T02:58:54.8987521Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.8987682Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
2026-10-24T02:58:54.8987786Z 107 โ );
2026-10-24T02:58:54.8987963Z 108 โ const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
2026-10-24T02:58:54.8988052Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.8988201Z ยท โฐโโ `separationProgress` originates here
2026-10-24T02:58:54.8988251Z 109 โ
2026-10-24T02:58:54.8988316Z 110 โ useEffect(() => {
2026-10-24T02:58:54.8988486Z 111 โ separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
2026-10-24T02:58:54.8988570Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.8988718Z ยท โฐโโ `separationProgress` cannot be modified
2026-10-24T02:58:54.8988824Z 112 โ }, [props.showScrollToEnd, separationProgress]);
2026-10-24T02:58:54.8988875Z โฐโโโโ
2026-10-24T02:58:54.8989140Z 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-24T02:58:54.8989447Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8989449Z
2026-10-24T02:58:54.8989599Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.8989756Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T02:58:54.8989874Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-24T02:58:54.8990016Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T02:58:54.8990098Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8990238Z ยท โฐโโ `capsuleWidth` originates here
2026-10-24T02:58:54.8990351Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T02:58:54.8990465Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.8990566Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T02:58:54.8990659Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T02:58:54.8990720Z 134 โ return;
2026-10-24T02:58:54.8990775Z 135 โ }
2026-10-24T02:58:54.8990879Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T02:58:54.8990963Z 137 โ measuredWidthRef.current = width;
2026-10-24T02:58:54.8991104Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T02:58:54.8991178Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8991314Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-24T02:58:54.8991374Z 139 โ };
2026-10-24T02:58:54.8991427Z โฐโโโโ
2026-10-24T02:58:54.8991682Z 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-24T02:58:54.8991979Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8991982Z
2026-10-24T02:58:54.8992134Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.8992294Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T02:58:54.8992403Z 128 โ // and repeatedly retargets the animation as it grows.
2026-10-24T02:58:54.8992514Z 129 โ const capsuleWidth = useSharedValue<number | null>(null);
2026-10-24T02:58:54.8992643Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8992808Z ยท โฐโโ `capsuleWidth` originates here
2026-10-24T02:58:54.8992916Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T02:58:54.8993025Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.8993125Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T02:58:54.8993218Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T02:58:54.8993278Z 134 โ return;
2026-10-24T02:58:54.8993330Z 135 โ }
2026-10-24T02:58:54.8993434Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T02:58:54.8993517Z 137 โ measuredWidthRef.current = width;
2026-10-24T02:58:54.8993656Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T02:58:54.8993707Z 139 โ };
2026-10-24T02:58:54.8993802Z 140 โ const hasStatus = props.status !== null;
2026-10-24T02:58:54.8993936Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T02:58:54.8994001Z 142 โ useEffect(() => {
2026-10-24T02:58:54.8994065Z 143 โ if (!hasStatus) {
2026-10-24T02:58:54.8994150Z 144 โ measuredWidthRef.current = null;
2026-10-24T02:58:54.8994228Z 145 โ capsuleWidth.value = null;
2026-10-24T02:58:54.8994304Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8994441Z ยท โฐโโ `capsuleWidth` cannot be modified
2026-10-24T02:58:54.8994495Z 146 โ }
2026-10-24T02:58:54.8994548Z โฐโโโโ
2026-10-24T02:58:54.8994802Z 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-24T02:58:54.8995103Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8995108Z
2026-10-24T02:58:54.8995306Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T02:58:54.8995464Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
2026-10-24T02:58:54.8995595Z 141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
2026-10-24T02:58:54.8995658Z 142 โ useEffect(() => {
2026-10-24T02:58:54.8995734Z ยท โโโโฌโโโ
2026-10-24T02:58:54.8995953Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T02:58:54.8996018Z 143 โ if (!hasStatus) {
2026-10-24T02:58:54.8996107Z 144 โ measuredWidthRef.current = null;
2026-10-24T02:58:54.8996187Z 145 โ capsuleWidth.value = null;
2026-10-24T02:58:54.8996262Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8996395Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-24T02:58:54.8996447Z 146 โ }
2026-10-24T02:58:54.8996498Z โฐโโโโ
2026-10-24T02:58:54.8996834Z help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T02:58:54.8997129Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8997131Z
2026-10-24T02:58:54.8997375Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T02:58:54.8997567Z โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
2026-10-24T02:58:54.8997675Z 130 โ const measuredWidthRef = useRef<number | null>(null);
2026-10-24T02:58:54.8997790Z 131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.8997910Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.8998143Z ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
2026-10-24T02:58:54.8998246Z 132 โ const width = event.nativeEvent.layout.width;
2026-10-24T02:58:54.8998341Z 133 โ if (width === measuredWidthRef.current) {
2026-10-24T02:58:54.8998400Z 134 โ return;
2026-10-24T02:58:54.8998453Z 135 โ }
2026-10-24T02:58:54.8998564Z 136 โ const first = measuredWidthRef.current === null;
2026-10-24T02:58:54.8998651Z 137 โ measuredWidthRef.current = width;
2026-10-24T02:58:54.8998791Z 138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
2026-10-24T02:58:54.8998864Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.8998996Z ยท โฐโโ This modifies `capsuleWidth`
2026-10-24T02:58:54.8999050Z 139 โ };
2026-10-24T02:58:54.8999102Z โฐโโโโ
2026-10-24T02:58:54.8999432Z help: This argument is a function which may reassign or mutate `capsuleWidth` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T02:58:54.8999729Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.8999731Z
2026-10-24T02:58:54.8999898Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9000084Z โญโ[apps/mobile/src/features/threads/thread-work-log.tsx:174:5]
2026-10-24T02:58:54.9000226Z 170 โ const expandedAngle = props.collapsedDirection === "right" ? 90 : 180;
2026-10-24T02:58:54.9000357Z 171 โ const rotation = useSharedValue(props.expanded ? expandedAngle : 0);
2026-10-24T02:58:54.9000430Z ยท โโโโโฌโโโ
2026-10-24T02:58:54.9000558Z ยท โฐโโ `rotation` originates here
2026-10-24T02:58:54.9000610Z 172 โ
2026-10-24T02:58:54.9000677Z 173 โ useLayoutEffect(() => {
2026-10-24T02:58:54.9000809Z 174 โ rotation.value = withTiming(props.expanded ? expandedAngle : 0, {
2026-10-24T02:58:54.9000879Z ยท โโโโโฌโโโ
2026-10-24T02:58:54.9001014Z ยท โฐโโ `rotation` cannot be modified
2026-10-24T02:58:54.9001111Z 175 โ duration: THREAD_DISCLOSURE_TRANSITION_MS,
2026-10-24T02:58:54.9001163Z โฐโโโโ
2026-10-24T02:58:54.9001418Z 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-24T02:58:54.9001715Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9001717Z
2026-10-24T02:58:54.9001905Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T02:58:54.9002053Z โญโ[apps/mobile/src/features/threads/thread-work-log.tsx:1246:23]
2026-10-24T02:58:54.9002122Z 1245 โ <Text
2026-10-24T02:58:54.9002265Z 1246 โ key={`${index}:${line}`}
2026-10-24T02:58:54.9002409Z ยท โโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9002484Z 1247 โ selectable
2026-10-24T02:58:54.9002536Z โฐโโโโ
2026-10-24T02:58:54.9002680Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T02:58:54.9002683Z
2026-10-24T02:58:54.9002958Z โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
2026-10-24T02:58:54.9003110Z โญโ[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
2026-10-24T02:58:54.9003165Z 162 โ keys,
2026-10-24T02:58:54.9003238Z 163 โ overridingProjects = [],
2026-10-24T02:58:54.9003317Z ยท โโ
2026-10-24T02:58:54.9003383Z 164 โ onClearOverrides,
2026-10-24T02:58:54.9003442Z โฐโโโโ
2026-10-24T02:58:54.9003753Z 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-24T02:58:54.9003756Z
2026-10-24T02:58:54.9004005Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9004151Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
2026-10-24T02:58:54.9004287Z 355 โ }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
2026-10-24T02:58:54.9004351Z 356 โ useEffect(() => {
2026-10-24T02:58:54.9004421Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9004546Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9004641Z 357 โ if (!isReturningToProjectPicker) {
2026-10-24T02:58:54.9004702Z 358 โ return;
2026-10-24T02:58:54.9004755Z 359 โ }
2026-10-24T02:58:54.9004849Z 360 โ if (requestedInitialProjectAvailable) {
2026-10-24T02:58:54.9004942Z 361 โ setIsReturningToProjectPicker(false);
2026-10-24T02:58:54.9005043Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9005215Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9005272Z 362 โ return;
2026-10-24T02:58:54.9005323Z โฐโโโโ
2026-10-24T02:58:54.9005957Z 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-24T02:58:54.9006301Z 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-24T02:58:54.9006303Z
2026-10-24T02:58:54.9006549Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9006696Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
2026-10-24T02:58:54.9006749Z 447 โ
2026-10-24T02:58:54.9006813Z 448 โ useEffect(() => {
2026-10-24T02:58:54.9006881Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9007008Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9007108Z 449 โ if (props.pendingTaskId || props.draftId) {
2026-10-24T02:58:54.9007173Z 450 โ return;
2026-10-24T02:58:54.9007228Z 451 โ }
2026-10-24T02:58:54.9007367Z 452 โ if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
2026-10-24T02:58:54.9007498Z 453 โ lastInitialProjectRefRef.current = props.initialProjectRef;
2026-10-24T02:58:54.9007602Z 454 โ appliedInitialProjectKeyRef.current = null;
2026-10-24T02:58:54.9007653Z 455 โ }
2026-10-24T02:58:54.9007792Z 456 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-24T02:58:54.9007918Z 457 โ const initialProjectId = props.initialProjectRef?.projectId;
2026-10-24T02:58:54.9008021Z 458 โ if (initialEnvironmentId && initialProjectId) {
2026-10-24T02:58:54.9008090Z 459 โ const directProject =
2026-10-24T02:58:54.9008157Z 460 โ projects.find(
2026-10-24T02:58:54.9008222Z 461 โ (project) =>
2026-10-24T02:58:54.9008401Z 462 โ project.environmentId === initialEnvironmentId && project.id === initialProjectId,
2026-10-24T02:58:54.9008463Z 463 โ ) ?? null;
2026-10-24T02:58:54.9008514Z 464 โ
2026-10-24T02:58:54.9008582Z 465 โ if (directProject) {
2026-10-24T02:58:54.9008717Z 466 โ // Apply the route's project once. Re-applying on every change would
2026-10-24T02:58:54.9008852Z 467 โ // instantly revert environment/project switches made in the picker.
2026-10-24T02:58:54.9009008Z 468 โ const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
2026-10-24T02:58:54.9009140Z 469 โ if (appliedInitialProjectKeyRef.current === directProjectKey) {
2026-10-24T02:58:54.9009202Z 470 โ return;
2026-10-24T02:58:54.9009257Z 471 โ }
2026-10-24T02:58:54.9009353Z 472 โ if (props.initialProjectRef?.branch) {
2026-10-24T02:58:54.9009414Z 473 โ if (
2026-10-24T02:58:54.9009559Z 474 โ selectedProject?.environmentId !== directProject.environmentId ||
2026-10-24T02:58:54.9009662Z 475 โ selectedProject.id !== directProject.id
2026-10-24T02:58:54.9009721Z 476 โ ) {
2026-10-24T02:58:54.9009804Z 477 โ setProject(directProject);
2026-10-24T02:58:54.9009892Z 478 โ return;
2026-10-24T02:58:54.9009948Z 479 โ }
2026-10-24T02:58:54.9010028Z 480 โ if (!flow.draftKey) return;
2026-10-24T02:58:54.9010167Z 481 โ // The route completes checkout before mounting this composer. Local
2026-10-24T02:58:54.9010307Z 482 โ // mode reuses an existing worktree; worktree mode would create another.
2026-10-24T02:58:54.9010412Z 483 โ updateComposerDraftSettings(flow.draftKey, {
2026-10-24T02:58:54.9010490Z 484 โ workspaceSelection: {
2026-10-24T02:58:54.9010610Z 485 โ mode: "local",
2026-10-24T02:58:54.9010743Z 486 โ branch: props.initialProjectRef.branch,
2026-10-24T02:58:54.9010875Z 487 โ worktreePath: props.initialProjectRef.worktreePath ?? null,
2026-10-24T02:58:54.9010955Z 488 โ startFromOrigin: false,
2026-10-24T02:58:54.9011015Z 489 โ },
2026-10-24T02:58:54.9011075Z 490 โ });
2026-10-24T02:58:54.9011130Z 491 โ }
2026-10-24T02:58:54.9011256Z 492 โ appliedInitialProjectKeyRef.current = directProjectKey;
2026-10-24T02:58:54.9011314Z 493 โ if (
2026-10-24T02:58:54.9011450Z 494 โ selectedProject?.environmentId === directProject.environmentId &&
2026-10-24T02:58:54.9011547Z 495 โ selectedProject.id === directProject.id
2026-10-24T02:58:54.9011605Z 496 โ ) {
2026-10-24T02:58:54.9011665Z 497 โ return;
2026-10-24T02:58:54.9011724Z 498 โ }
2026-10-24T02:58:54.9011806Z 499 โ setProject(directProject);
2026-10-24T02:58:54.9011866Z 500 โ return;
2026-10-24T02:58:54.9011919Z 501 โ }
2026-10-24T02:58:54.9011969Z 502 โ
2026-10-24T02:58:54.9012049Z 503 โ if (projects.length > 0) {
2026-10-24T02:58:54.9012143Z 504 โ setIsReturningToProjectPicker(true);
2026-10-24T02:58:54.9012249Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9012424Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9012480Z 505 โ }
2026-10-24T02:58:54.9012531Z โฐโโโโ
2026-10-24T02:58:54.9013117Z 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-24T02:58:54.9013434Z 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-24T02:58:54.9013437Z
2026-10-24T02:58:54.9013686Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9013835Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
2026-10-24T02:58:54.9013887Z 545 โ
2026-10-24T02:58:54.9013952Z 546 โ useEffect(() => {
2026-10-24T02:58:54.9014021Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9014149Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9014245Z 547 โ const shareId = props.incomingShareId;
2026-10-24T02:58:54.9014330Z 548 โ const draftKey = flow.draftKey;
2026-10-24T02:58:54.9014428Z 549 โ const destinationProject = selectedProject;
2026-10-24T02:58:54.9014569Z 550 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
2026-10-24T02:58:54.9014695Z 551 โ const initialProjectId = props.initialProjectRef?.projectId;
2026-10-24T02:58:54.9014783Z 552 โ const selectedProjectMatchesRoute =
2026-10-24T02:58:54.9014855Z 553 โ !initialEnvironmentId ||
2026-10-24T02:58:54.9014924Z 554 โ !initialProjectId ||
2026-10-24T02:58:54.9015051Z 555 โ (destinationProject?.environmentId === initialEnvironmentId &&
2026-10-24T02:58:54.9015153Z 556 โ destinationProject.id === initialProjectId);
2026-10-24T02:58:54.9015209Z 557 โ if (
2026-10-24T02:58:54.9015271Z 558 โ !shareId ||
2026-10-24T02:58:54.9015388Z 559 โ !draftKey ||
2026-10-24T02:58:54.9015487Z 560 โ !destinationProject ||
2026-10-24T02:58:54.9015573Z 561 โ !selectedProjectMatchesRoute ||
2026-10-24T02:58:54.9015661Z 562 โ cancelledIncomingShareId === shareId
2026-10-24T02:58:54.9015718Z 563 โ ) {
2026-10-24T02:58:54.9015775Z 564 โ return;
2026-10-24T02:58:54.9015828Z 565 โ }
2026-10-24T02:58:54.9015923Z 566 โ const importKey = `${shareId}:${draftKey}`;
2026-10-24T02:58:54.9015979Z 567 โ if (
2026-10-24T02:58:54.9016086Z 568 โ startedShareImportKeyRef.current === importKey ||
2026-10-24T02:58:54.9016194Z 569 โ cancellingShareImportKeyRef.current === importKey
2026-10-24T02:58:54.9016249Z 570 โ ) {
2026-10-24T02:58:54.9016308Z 571 โ return;
2026-10-24T02:58:54.9016359Z 572 โ }
2026-10-24T02:58:54.9016409Z 573 โ
2026-10-24T02:58:54.9016480Z 574 โ if (!incomingShare) {
2026-10-24T02:58:54.9016673Z 575 โ if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
2026-10-24T02:58:54.9016798Z 576 โ alertedUnavailableIncomingShareIdRef.current = shareId;
2026-10-24T02:58:54.9016863Z 577 โ Dialog.alert(
2026-10-24T02:58:54.9016946Z 578 โ "Shared content unavailable",
2026-10-24T02:58:54.9017115Z 579 โ "The shared content is no longer in the inbox. You can continue editing this task draft.",
2026-10-24T02:58:54.9017172Z 580 โ );
2026-10-24T02:58:54.9017225Z 581 โ }
2026-10-24T02:58:54.9017283Z 582 โ return;
2026-10-24T02:58:54.9017335Z 583 โ }
2026-10-24T02:58:54.9017385Z 584 โ
2026-10-24T02:58:54.9017440Z 585 โ if (
2026-10-24T02:58:54.9017602Z 586 โ incomingShare.attachments.some((attachment) => attachment.type === "file") &&
2026-10-24T02:58:54.9017700Z 587 โ selectedEnvironmentServerConfig === null
2026-10-24T02:58:54.9017754Z 588 โ ) {
2026-10-24T02:58:54.9017811Z 589 โ return;
2026-10-24T02:58:54.9017864Z 590 โ }
2026-10-24T02:58:54.9017913Z 591 โ
2026-10-24T02:58:54.9018050Z 592 โ if (alertedUnavailableIncomingShareIdRef.current === shareId) {
2026-10-24T02:58:54.9018167Z 593 โ alertedUnavailableIncomingShareIdRef.current = null;
2026-10-24T02:58:54.9018219Z 594 โ }
2026-10-24T02:58:54.9018322Z 595 โ startedShareImportKeyRef.current = importKey;
2026-10-24T02:58:54.9018394Z 596 โ const draftBackup =
2026-10-24T02:58:54.9018577Z 597 โ shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
2026-10-24T02:58:54.9018711Z 598 โ shareImportDraftBackupRef.current.set(importKey, draftBackup);
2026-10-24T02:58:54.9018804Z 599 โ const importToken = Symbol(importKey);
2026-10-24T02:58:54.9018885Z 600 โ let didReserveShare = false;
2026-10-24T02:58:54.9018961Z 601 โ let didConsumeShare = false;
2026-10-24T02:58:54.9019039Z 602 โ let needsDraftRestore = false;
2026-10-24T02:58:54.9019145Z 603 โ activeShareImportTokenRef.current = importToken;
2026-10-24T02:58:54.9019229Z 604 โ setImportingShareKey(importKey);
2026-10-24T02:58:54.9019313Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9019499Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9019642Z 605 โ void (async () => {
2026-10-24T02:58:54.9019693Z โฐโโโโ
2026-10-24T02:58:54.9020374Z 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-24T02:58:54.9020728Z 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-24T02:58:54.9020731Z
2026-10-24T02:58:54.9020929Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9021078Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
2026-10-24T02:58:54.9021152Z 523 โ props.initialProjectRef,
2026-10-24T02:58:54.9021224Z 524 โ props.incomingShareId,
2026-10-24T02:58:54.9021308Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9021478Z ยท โฐโโ Unnecessary dependency `props.incomingShareId`
2026-10-24T02:58:54.9021550Z 525 โ props.pendingTaskId,
2026-10-24T02:58:54.9021601Z โฐโโโโ
2026-10-24T02:58:54.9021886Z 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-24T02:58:54.9022192Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9022195Z
2026-10-24T02:58:54.9022406Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T02:58:54.9022552Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
2026-10-24T02:58:54.9022665Z 542 โ loadedBranchesProjectKeyRef.current = projectKey;
2026-10-24T02:58:54.9022735Z 543 โ flow.loadBranches();
2026-10-24T02:58:54.9022807Z ยท โโโฌโ
2026-10-24T02:58:54.9022929Z ยท โฐโโ Missing dependency `flow`
2026-10-24T02:58:54.9023020Z 544 โ }, [flow.loadBranches, selectedProject]);
2026-10-24T02:58:54.9023102Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9023296Z ยท โฐโโ Overly precise dependency `flow.loadBranches`, use `flow` instead
2026-10-24T02:58:54.9023348Z 545 โ
2026-10-24T02:58:54.9023400Z โฐโโโโ
2026-10-24T02:58:54.9023809Z 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-24T02:58:54.9024116Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9024122Z
2026-10-24T02:58:54.9024318Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9024465Z โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
2026-10-24T02:58:54.9024528Z 765 โ flow.draftKey,
2026-10-24T02:58:54.9024604Z 766 โ hasImportedIncomingShare,
2026-10-24T02:58:54.9024693Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9024863Z ยท โฐโโ Unnecessary dependency `hasImportedIncomingShare`
2026-10-24T02:58:54.9024926Z 767 โ incomingShare,
2026-10-24T02:58:54.9025004Z 768 โ isIncomingShareInboxLoading,
2026-10-24T02:58:54.9025098Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
2026-10-24T02:58:54.9025327Z ยท โฐโโ Unnecessary dependency `isIncomingShareInboxLoading`
2026-10-24T02:58:54.9025436Z 769 โ isIncomingShareUnavailable,
2026-10-24T02:58:54.9025506Z 770 โ props.incomingShareId,
2026-10-24T02:58:54.9025598Z 771 โ props.initialProjectRef?.environmentId,
2026-10-24T02:58:54.9025683Z 772 โ props.initialProjectRef?.projectId,
2026-10-24T02:58:54.9025755Z 773 โ releaseShareReservation,
2026-10-24T02:58:54.9025818Z 774 โ reserveShare,
2026-10-24T02:58:54.9025903Z 775 โ selectedEnvironmentServerConfig,
2026-10-24T02:58:54.9025969Z 776 โ selectedProject,
2026-10-24T02:58:54.9026035Z 777 โ shareImportAttempt,
2026-10-24T02:58:54.9026120Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9026285Z ยท โฐโโ Unnecessary dependency `shareImportAttempt`
2026-10-24T02:58:54.9026342Z 778 โ ]);
2026-10-24T02:58:54.9026391Z โฐโโโโ
2026-10-24T02:58:54.9026676Z 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-24T02:58:54.9026980Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9026983Z
2026-10-24T02:58:54.9027257Z โ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.9027402Z โญโ[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
2026-10-24T02:58:54.9027454Z 60 โ ) {
2026-10-24T02:58:54.9027626Z 61 โ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
2026-10-24T02:58:54.9027709Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9027848Z ยท โฐโโ 'useDragRegion' is declared here
2026-10-24T02:58:54.9027935Z 62 โ const isInline = props.mode === "inline";
2026-10-24T02:58:54.9027988Z โฐโโโโ
2026-10-24T02:58:54.9028093Z help: Consider removing this declaration.
2026-10-24T02:58:54.9028095Z
2026-10-24T02:58:54.9028248Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9028399Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T02:58:54.9028454Z 86 โ
2026-10-24T02:58:54.9028546Z 87 โ const cardCoverage = props.cardCoverage;
2026-10-24T02:58:54.9028627Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9028811Z ยท โฐโโ `cardCoverage` originates here
2026-10-24T02:58:54.9028920Z 88 โ const barHeightRef = useRef(0);
2026-10-24T02:58:54.9029000Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T02:58:54.9029085Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T02:58:54.9029175Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T02:58:54.9029243Z 92 โ if (!cardCoverage) {
2026-10-24T02:58:54.9029307Z 93 โ return;
2026-10-24T02:58:54.9029361Z 94 โ }
2026-10-24T02:58:54.9029506Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T02:58:54.9029593Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T02:58:54.9029652Z 97 โ return;
2026-10-24T02:58:54.9029708Z 98 โ }
2026-10-24T02:58:54.9029786Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T02:58:54.9029883Z 100 โ cardCoverage.value = coverage;
2026-10-24T02:58:54.9029998Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9030145Z ยท โฐโโ `cardCoverage` cannot be modified
2026-10-24T02:58:54.9030203Z 101 โ return;
2026-10-24T02:58:54.9030256Z โฐโโโโ
2026-10-24T02:58:54.9030544Z help: Do not mutate component props or hook arguments. If the value should change, update it where it is owned and pass an update callback, or use local state
2026-10-24T02:58:54.9030843Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9030845Z
2026-10-24T02:58:54.9030996Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9031157Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T02:58:54.9031240Z 89 โ const cardHeightRef = useRef(0);
2026-10-24T02:58:54.9031325Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T02:58:54.9031400Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9031535Z ยท โฐโโ `cardHeight` originates here
2026-10-24T02:58:54.9031627Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T02:58:54.9031695Z 92 โ if (!cardCoverage) {
2026-10-24T02:58:54.9031752Z 93 โ return;
2026-10-24T02:58:54.9031807Z 94 โ }
2026-10-24T02:58:54.9031953Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T02:58:54.9032039Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T02:58:54.9032095Z 97 โ return;
2026-10-24T02:58:54.9032151Z 98 โ }
2026-10-24T02:58:54.9032239Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T02:58:54.9032324Z 100 โ cardCoverage.value = coverage;
2026-10-24T02:58:54.9032380Z 101 โ return;
2026-10-24T02:58:54.9032435Z 102 โ }
2026-10-24T02:58:54.9032536Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T02:58:54.9032629Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T02:58:54.9032713Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T02:58:54.9032770Z 106 โ });
2026-10-24T02:58:54.9032839Z 107 โ }, [cardCoverage]);
2026-10-24T02:58:54.9032920Z 108 โ const handleBarLayout = useCallback(
2026-10-24T02:58:54.9033000Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.9033127Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9033196Z 111 โ notifyCoverage();
2026-10-24T02:58:54.9033251Z 112 โ },
2026-10-24T02:58:54.9033376Z 113 โ [notifyCoverage],
2026-10-24T02:58:54.9033461Z 114 โ );
2026-10-24T02:58:54.9033544Z 115 โ const handleCardLayout = useCallback(
2026-10-24T02:58:54.9033623Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.9033749Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9033862Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9033938Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9034072Z ยท โฐโโ `cardHeight` cannot be modified
2026-10-24T02:58:54.9034141Z 119 โ notifyCoverage();
2026-10-24T02:58:54.9034193Z โฐโโโโ
2026-10-24T02:58:54.9034452Z 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-24T02:58:54.9034755Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9034760Z
2026-10-24T02:58:54.9034958Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T02:58:54.9035112Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T02:58:54.9035196Z 90 โ const cardHeight = useSharedValue(0);
2026-10-24T02:58:54.9035287Z 91 โ const notifyCoverage = useCallback(() => {
2026-10-24T02:58:54.9035392Z ยท โโโโฌโโโ
2026-10-24T02:58:54.9035628Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T02:58:54.9035697Z 92 โ if (!cardCoverage) {
2026-10-24T02:58:54.9035763Z 93 โ return;
2026-10-24T02:58:54.9035819Z 94 โ }
2026-10-24T02:58:54.9035966Z 95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
2026-10-24T02:58:54.9036052Z 96 โ if (coverage === cardCoverage.value) {
2026-10-24T02:58:54.9036108Z 97 โ return;
2026-10-24T02:58:54.9036164Z 98 โ }
2026-10-24T02:58:54.9036246Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T02:58:54.9036328Z 100 โ cardCoverage.value = coverage;
2026-10-24T02:58:54.9036405Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9036539Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T02:58:54.9036604Z 101 โ return;
2026-10-24T02:58:54.9036656Z โฐโโโโ
2026-10-24T02:58:54.9036994Z help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T02:58:54.9037296Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9037299Z
2026-10-24T02:58:54.9037495Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T02:58:54.9037648Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
2026-10-24T02:58:54.9037728Z 99 โ if (cardCoverage.value === 0) {
2026-10-24T02:58:54.9037807Z 100 โ cardCoverage.value = coverage;
2026-10-24T02:58:54.9037886Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9038016Z ยท โฐโโ This modifies `cardCoverage`
2026-10-24T02:58:54.9038126Z 101 โ return;
2026-10-24T02:58:54.9038293Z 102 โ }
2026-10-24T02:58:54.9038396Z 103 โ cardCoverage.value = withTiming(coverage, {
2026-10-24T02:58:54.9038491Z 104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
2026-10-24T02:58:54.9038575Z 105 โ easing: Easing.out(Easing.cubic),
2026-10-24T02:58:54.9038630Z 106 โ });
2026-10-24T02:58:54.9038696Z 107 โ }, [cardCoverage]);
2026-10-24T02:58:54.9038779Z 108 โ const handleBarLayout = useCallback(
2026-10-24T02:58:54.9038857Z 109 โ (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.9038963Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9039182Z ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
2026-10-24T02:58:54.9039307Z 110 โ barHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9039362Z โฐโโโโ
2026-10-24T02:58:54.9039695Z help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T02:58:54.9040042Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9040044Z
2026-10-24T02:58:54.9040241Z โ react(immutability): Cannot modify local variables after render completes
2026-10-24T02:58:54.9040395Z โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:118:7]
2026-10-24T02:58:54.9040478Z 115 โ const handleCardLayout = useCallback(
2026-10-24T02:58:54.9040560Z 116 โ (event: LayoutChangeEvent) => {
2026-10-24T02:58:54.9040669Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9040885Z ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
2026-10-24T02:58:54.9041010Z 117 โ cardHeightRef.current = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9041124Z 118 โ cardHeight.value = event.nativeEvent.layout.height;
2026-10-24T02:58:54.9041200Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9041329Z ยท โฐโโ This modifies `cardHeight`
2026-10-24T02:58:54.9041395Z 119 โ notifyCoverage();
2026-10-24T02:58:54.9041448Z โฐโโโโ
2026-10-24T02:58:54.9041776Z help: This argument is a function which may reassign or mutate `cardHeight` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
2026-10-24T02:58:54.9042077Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9042081Z
2026-10-24T02:58:54.9042335Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9042491Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
2026-10-24T02:58:54.9042604Z 37 โ const [initialized, setInitialized] = useState(false);
2026-10-24T02:58:54.9042673Z 38 โ useLayoutEffect(() => {
2026-10-24T02:58:54.9042749Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9042878Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9042941Z 39 โ reset();
2026-10-24T02:58:54.9043010Z 40 โ setInitialized(true);
2026-10-24T02:58:54.9043140Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9043335Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9043396Z 41 โ }, [reset]);
2026-10-24T02:58:54.9043450Z โฐโโโโ
2026-10-24T02:58:54.9044037Z 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-24T02:58:54.9044352Z 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-24T02:58:54.9044356Z
2026-10-24T02:58:54.9044609Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9044767Z โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
2026-10-24T02:58:54.9044820Z 88 โ
2026-10-24T02:58:54.9044886Z 89 โ useEffect(() => {
2026-10-24T02:58:54.9044954Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9045082Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9045237Z 90 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
2026-10-24T02:58:54.9045338Z 91 โ const branchName = initialProjectRef.branch;
2026-10-24T02:58:54.9045403Z 92 โ let active = true;
2026-10-24T02:58:54.9045499Z 93 โ setPendingCheckouts((count) => count + 1);
2026-10-24T02:58:54.9045583Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9045765Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9045917Z 94 โ // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
2026-10-24T02:58:54.9045969Z โฐโโโโ
2026-10-24T02:58:54.9046990Z 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-24T02:58:54.9047306Z 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-24T02:58:54.9047308Z
2026-10-24T02:58:54.9047550Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T02:58:54.9047703Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
2026-10-24T02:58:54.9047763Z 289 โ return (
2026-10-24T02:58:54.9047895Z 290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
2026-10-24T02:58:54.9048147Z ยท โโโโโโโโโโโโโ
2026-10-24T02:58:54.9048215Z 291 โ {props.children}
2026-10-24T02:58:54.9048267Z โฐโโโโ
2026-10-24T02:58:54.9048488Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T02:58:54.9048627Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T02:58:54.9048629Z
2026-10-24T02:58:54.9048918Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T02:58:54.9049106Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
2026-10-24T02:58:54.9049165Z 653 โ return (
2026-10-24T02:58:54.9049284Z 654 โ <ThreadSettingsSessionContext.Provider value={value}>
2026-10-24T02:58:54.9049396Z ยท โโโโโโโโโโโโโ
2026-10-24T02:58:54.9049464Z 655 โ {props.children}
2026-10-24T02:58:54.9049516Z โฐโโโโ
2026-10-24T02:58:54.9049733Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T02:58:54.9049908Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T02:58:54.9049913Z
2026-10-24T02:58:54.9050145Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T02:58:54.9050305Z โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
2026-10-24T02:58:54.9050373Z 1461 โ return (
2026-10-24T02:58:54.9050533Z 1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
2026-10-24T02:58:54.9050661Z ยท โโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9050759Z 1463 โ <ThreadSettingsPickerStack.Navigator
2026-10-24T02:58:54.9050812Z โฐโโโโ
2026-10-24T02:58:54.9051026Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T02:58:54.9051157Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T02:58:54.9051159Z
2026-10-24T02:58:54.9051416Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9051599Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
2026-10-24T02:58:54.9051651Z 117 โ
2026-10-24T02:58:54.9051714Z 118 โ useEffect(() => {
2026-10-24T02:58:54.9051787Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9051916Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9051998Z 119 โ void refreshNotifications();
2026-10-24T02:58:54.9052086Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9052259Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9052401Z 120 โ const subscription = AppState.addEventListener("change", (state) => {
2026-10-24T02:58:54.9052453Z โฐโโโโ
2026-10-24T02:58:54.9053084Z 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-24T02:58:54.9053431Z 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-24T02:58:54.9053434Z
2026-10-24T02:58:54.9053684Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9053868Z โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
2026-10-24T02:58:54.9053920Z 125 โ
2026-10-24T02:58:54.9053988Z 126 โ useEffect(() => {
2026-10-24T02:58:54.9054062Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9054191Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9054257Z 127 โ if (!isLoaded) {
2026-10-24T02:58:54.9054345Z 128 โ setLiveActivityStatus("checking");
2026-10-24T02:58:54.9054434Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9054603Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9054665Z 129 โ return;
2026-10-24T02:58:54.9054715Z โฐโโโโ
2026-10-24T02:58:54.9055305Z 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-24T02:58:54.9055619Z 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-24T02:58:54.9055621Z
2026-10-24T02:58:54.9055869Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9056025Z โญโ[apps/mobile/src/features/threads/new-task-flow-provider.tsx:444:5]
2026-10-24T02:58:54.9056085Z 434 โ : null;
2026-10-24T02:58:54.9056152Z 435 โ useEffect(() => {
2026-10-24T02:58:54.9056221Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9056347Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9056404Z 436 โ if (
2026-10-24T02:58:54.9056487Z 437 โ props.active === false ||
2026-10-24T02:58:54.9056566Z 438 โ activeDraftKey !== null ||
2026-10-24T02:58:54.9056648Z 439 โ editingPendingTask !== null ||
2026-10-24T02:58:54.9056722Z 440 โ selectedProject === null
2026-10-24T02:58:54.9056778Z 441 โ ) {
2026-10-24T02:58:54.9056838Z 442 โ return;
2026-10-24T02:58:54.9056891Z 443 โ }
2026-10-24T02:58:54.9056960Z 444 โ setActiveDraftKey(
2026-10-24T02:58:54.9057043Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9057208Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9057279Z 445 โ createNewTaskDraft({
2026-10-24T02:58:54.9057334Z โฐโโโโ
2026-10-24T02:58:54.9057968Z 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-24T02:58:54.9058307Z 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-24T02:58:54.9058310Z
2026-10-24T02:58:54.9058542Z โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
2026-10-24T02:58:54.9058702Z โญโ[apps/mobile/src/features/threads/new-task-flow-provider.tsx:1244:36]
2026-10-24T02:58:54.9058807Z 1243 โ <ActiveNewTaskContext value={activeNewTask}>
2026-10-24T02:58:54.9059002Z 1244 โ <NewTaskFlowContext.Provider value={value}>{props.children}</NewTaskFlowContext.Provider>
2026-10-24T02:58:54.9059118Z ยท โโโโโโโโโโโโโ
2026-10-24T02:58:54.9059194Z 1245 โ </ActiveNewTaskContext>
2026-10-24T02:58:54.9059245Z โฐโโโโ
2026-10-24T02:58:54.9059535Z help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
2026-10-24T02:58:54.9059706Z Alternatively, move the value outside the render function if it doesn't depend on props or state.
2026-10-24T02:58:54.9059709Z
2026-10-24T02:58:54.9059909Z โ react(purity): Cannot call impure function during render
2026-10-24T02:58:54.9060074Z โญโ[apps/mobile/src/features/threads/thread-list-v2-items.tsx:697:76]
2026-10-24T02:58:54.9060255Z 696 โ const [snoozeGateClock, setSnoozeGateClock] = useState(() => ({ thread, now: Date.now() }));
2026-10-24T02:58:54.9060425Z 697 โ if (snoozeGateClock.thread !== thread) setSnoozeGateClock({ thread, now: Date.now() });
2026-10-24T02:58:54.9060561Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9060738Z ยท โฐโโ Cannot call impure function
2026-10-24T02:58:54.9060874Z 698 โ const snoozeGateNow = new Date(snoozeGateClock.now).toISOString();
2026-10-24T02:58:54.9060927Z โฐโโโโ
2026-10-24T02:58:54.9061206Z 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-24T02:58:54.9061496Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T02:58:54.9061498Z
2026-10-24T02:58:54.9061666Z โ react(purity): Cannot call impure function during render
2026-10-24T02:58:54.9061822Z โญโ[apps/mobile/src/features/threads/thread-list-v2-items.tsx:718:71]
2026-10-24T02:58:54.9061902Z 717 โ const snoozePresets = useMemo(
2026-10-24T02:58:54.9062079Z 718 โ () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T02:58:54.9062205Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9062381Z ยท โฐโโ Cannot call impure function
2026-10-24T02:58:54.9062497Z 719 โ [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T02:58:54.9062549Z โฐโโโโ
2026-10-24T02:58:54.9062882Z help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T02:58:54.9063207Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T02:58:54.9063209Z
2026-10-24T02:58:54.9063388Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.9063540Z โญโ[apps/mobile/src/features/threads/thread-list-v2-items.tsx:719:6]
2026-10-24T02:58:54.9063715Z 718 โ () => (swipeActions.secondary === "snooze" ? resolveSnoozePresets(new Date()) : ([] as const)),
2026-10-24T02:58:54.9063827Z 719 โ [props.snoozePresetMinute, swipeActions.secondary],
2026-10-24T02:58:54.9063920Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9064100Z ยท โฐโโ Unnecessary dependency `props.snoozePresetMinute`
2026-10-24T02:58:54.9064158Z 720 โ );
2026-10-24T02:58:54.9064208Z โฐโโโโ
2026-10-24T02:58:54.9064517Z 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-24T02:58:54.9064823Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9064826Z
2026-10-24T02:58:54.9065002Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.9065151Z โญโ[apps/mobile/src/features/threads/thread-list-v2-items.tsx:765:7]
2026-10-24T02:58:54.9065218Z 764 โ thread.pinnedAt,
2026-10-24T02:58:54.9065281Z 765 โ variant,
2026-10-24T02:58:54.9065362Z ยท โโโโฌโโโ
2026-10-24T02:58:54.9065496Z ยท โฐโโ Unnecessary dependency `variant`
2026-10-24T02:58:54.9065554Z 766 โ ],
2026-10-24T02:58:54.9065606Z โฐโโโโ
2026-10-24T02:58:54.9065914Z 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-24T02:58:54.9066220Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9066222Z
2026-10-24T02:58:54.9066411Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T02:58:54.9066573Z โญโ[apps/mobile/src/features/threads/thread-list-v2-items.tsx:1215:21]
2026-10-24T02:58:54.9066703Z 1214 โ {providerDrivers.slice(0, -1).map((driver, index) => (
2026-10-24T02:58:54.9068348Z 1215 โ <View key={`${driver}:${index}`} className="-mr-1 opacity-30">
2026-10-24T02:58:54.9068469Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9068578Z 1216 โ <ProviderIcon provider={driver} size={12} />
2026-10-24T02:58:54.9068629Z โฐโโโโ
2026-10-24T02:58:54.9068774Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T02:58:54.9068777Z
2026-10-24T02:58:54.9069031Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.9069159Z โญโ[packages/provider-pi/src/server/adapter.ts:3405:7]
2026-10-24T02:58:54.9069214Z 3404 โ
2026-10-24T02:58:54.9069479Z 3405 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, PiAdapterV2DriverEnv> =
2026-10-24T02:58:54.9069578Z ยท โโโฌโโ
2026-10-24T02:58:54.9069703Z ยท โฐโโ 'layer' is declared here
2026-10-24T02:58:54.9069768Z 3406 โ Layer.effect(
2026-10-24T02:58:54.9069818Z โฐโโโโ
2026-10-24T02:58:54.9069931Z help: Consider removing this declaration.
2026-10-24T02:58:54.9069934Z
2026-10-24T02:58:54.9070156Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.9070315Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
2026-10-24T02:58:54.9070418Z 99 โ const startEditor = startScheduledTaskEditor;
2026-10-24T02:58:54.9070602Z 100 โ const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
2026-10-24T02:58:54.9070746Z ยท โโโโโโฌโโโโโ
2026-10-24T02:58:54.9070943Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T02:58:54.9071021Z 101 โ const readEditor = useCallback(
2026-10-24T02:58:54.9071071Z โฐโโโโ
2026-10-24T02:58:54.9071376Z 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-24T02:58:54.9071681Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9071683Z
2026-10-24T02:58:54.9071864Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.9072021Z โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
2026-10-24T02:58:54.9072082Z 120 โ setEditor,
2026-10-24T02:58:54.9072145Z 121 โ startEditor,
2026-10-24T02:58:54.9072220Z ยท โโโโโโฌโโโโโ
2026-10-24T02:58:54.9072361Z ยท โฐโโ Unnecessary dependency `startEditor`
2026-10-24T02:58:54.9072423Z 122 โ hasChanges,
2026-10-24T02:58:54.9072474Z โฐโโโโ
2026-10-24T02:58:54.9072779Z 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-24T02:58:54.9073088Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9073093Z
2026-10-24T02:58:54.9073344Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9073491Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:512:5]
2026-10-24T02:58:54.9073550Z 510 โ }, []);
2026-10-24T02:58:54.9073615Z 511 โ useEffect(() => {
2026-10-24T02:58:54.9073686Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9073811Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9073897Z 512 โ setKeyboardStateSuspect(false);
2026-10-24T02:58:54.9073986Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9074206Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9074334Z 513 โ }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T02:58:54.9074384Z โฐโโโโ
2026-10-24T02:58:54.9074968Z 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-24T02:58:54.9075280Z 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-24T02:58:54.9075284Z
2026-10-24T02:58:54.9075534Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9075689Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:872:7]
2026-10-24T02:58:54.9075844Z 869 โ const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
2026-10-24T02:58:54.9075909Z 870 โ useEffect(() => {
2026-10-24T02:58:54.9075979Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9076103Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9076260Z 871 โ if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
2026-10-24T02:58:54.9076370Z 872 โ setLastKnownKeyboardHeight(liveKeyboardHeight);
2026-10-24T02:58:54.9076464Z ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T02:58:54.9076634Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9076690Z 873 โ }
2026-10-24T02:58:54.9076740Z โฐโโโโ
2026-10-24T02:58:54.9077329Z 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-24T02:58:54.9077645Z 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-24T02:58:54.9077647Z
2026-10-24T02:58:54.9077896Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9078048Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1119:5]
2026-10-24T02:58:54.9078100Z 1117 โ
2026-10-24T02:58:54.9078171Z 1118 โ useEffect(() => {
2026-10-24T02:58:54.9078241Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9078369Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9078445Z 1119 โ setAnchorMessageId(null);
2026-10-24T02:58:54.9078528Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9078693Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9078773Z 1120 โ setSubmittedMessageId(null);
2026-10-24T02:58:54.9078824Z โฐโโโโ
2026-10-24T02:58:54.9079406Z 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-24T02:58:54.9079767Z 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-24T02:58:54.9079802Z
2026-10-24T02:58:54.9080041Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9080191Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:513:7]
2026-10-24T02:58:54.9080273Z 512 โ setKeyboardStateSuspect(false);
2026-10-24T02:58:54.9080369Z 513 โ }, [isKeyboardVisible, liveKeyboardHeight]);
2026-10-24T02:58:54.9080503Z ยท โโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9080706Z ยท โ โฐโโ Unnecessary dependency `liveKeyboardHeight`
2026-10-24T02:58:54.9080865Z ยท โฐโโ Unnecessary dependency `isKeyboardVisible`
2026-10-24T02:58:54.9080992Z 514 โ const handleOwnedInputFocusChange = (focused: boolean) => {
2026-10-24T02:58:54.9081041Z โฐโโโโ
2026-10-24T02:58:54.9081326Z 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-24T02:58:54.9081626Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9081628Z
2026-10-24T02:58:54.9081823Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9081973Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1067:7]
2026-10-24T02:58:54.9082060Z 1066 โ userInputInsetProgress.set(1);
2026-10-24T02:58:54.9082221Z 1067 โ }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
2026-10-24T02:58:54.9082313Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9082487Z ยท โฐโโ Unnecessary dependency `activeUserInputRequestId`
2026-10-24T02:58:54.9082591Z 1068 โ const showContent = props.showContent ?? true;
2026-10-24T02:58:54.9082643Z โฐโโโโ
2026-10-24T02:58:54.9082927Z 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-24T02:58:54.9083231Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9083233Z
2026-10-24T02:58:54.9083476Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9083654Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1125:15]
2026-10-24T02:58:54.9083722Z 1124 โ freeze.set(false);
2026-10-24T02:58:54.9083803Z 1125 โ }, [freeze, selectedThreadKey]);
2026-10-24T02:58:54.9083895Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9084055Z ยท โฐโโ Unnecessary dependency `selectedThreadKey`
2026-10-24T02:58:54.9084108Z 1126 โ
2026-10-24T02:58:54.9084158Z โฐโโโโ
2026-10-24T02:58:54.9084444Z 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-24T02:58:54.9084748Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9084753Z
2026-10-24T02:58:54.9084907Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9085054Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:955:5]
2026-10-24T02:58:54.9085162Z 950 โ const composerPopoverHeight = useSharedValue(0);
2026-10-24T02:58:54.9085264Z 951 โ const floatingControlCoverage = useSharedValue(
2026-10-24T02:58:54.9085356Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9085513Z ยท โฐโโ `floatingControlCoverage` originates here
2026-10-24T02:58:54.9085636Z 952 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T02:58:54.9085689Z 953 โ );
2026-10-24T02:58:54.9085761Z 954 โ useEffect(() => {
2026-10-24T02:58:54.9085864Z 955 โ floatingControlCoverage.value = withTiming(
2026-10-24T02:58:54.9085951Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9086107Z ยท โฐโโ `floatingControlCoverage` cannot be modified
2026-10-24T02:58:54.9086232Z 956 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
2026-10-24T02:58:54.9086284Z โฐโโโโ
2026-10-24T02:58:54.9086545Z 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-24T02:58:54.9086846Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9086850Z
2026-10-24T02:58:54.9087005Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9087154Z โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:973:7]
2026-10-24T02:58:54.9087335Z 963 โ const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
2026-10-24T02:58:54.9087455Z 964 โ const combinedContentInsetEndAdjustment = useSharedValue(
2026-10-24T02:58:54.9087562Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9087743Z ยท โฐโโ `combinedContentInsetEndAdjustment` originates here
2026-10-24T02:58:54.9087867Z 965 โ Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
2026-10-24T02:58:54.9087921Z 966 โ );
2026-10-24T02:58:54.9087988Z 967 โ useAnimatedReaction(
2026-10-24T02:58:54.9088046Z 968 โ () =>
2026-10-24T02:58:54.9088192Z 969 โ contentInsetEndAdjustment.value +
2026-10-24T02:58:54.9088306Z 970 โ floatingControlCoverage.value +
2026-10-24T02:58:54.9088495Z 971 โ (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
2026-10-24T02:58:54.9088556Z 972 โ (value) => {
2026-10-24T02:58:54.9088666Z 973 โ combinedContentInsetEndAdjustment.value = value;
2026-10-24T02:58:54.9088771Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9088956Z ยท โฐโโ `combinedContentInsetEndAdjustment` cannot be modified
2026-10-24T02:58:54.9089012Z 974 โ },
2026-10-24T02:58:54.9089062Z โฐโโโโ
2026-10-24T02:58:54.9089318Z 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-24T02:58:54.9089619Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9089624Z
2026-10-24T02:58:54.9089818Z โ eslint(no-unused-vars): Identifier 'Duration' is imported but never used.
2026-10-24T02:58:54.9089980Z โญโ[packages/provider-pi/src/server/adapter.test.ts:24:13]
2026-10-24T02:58:54.9090073Z 23 โ import * as Deferred from "effect/Deferred";
2026-10-24T02:58:54.9090162Z 24 โ import * as Duration from "effect/Duration";
2026-10-24T02:58:54.9090240Z ยท โโโโโฌโโโ
2026-10-24T02:58:54.9090371Z ยท โฐโโ 'Duration' is imported here
2026-10-24T02:58:54.9090455Z 25 โ import * as Effect from "effect/Effect";
2026-10-24T02:58:54.9090505Z โฐโโโโ
2026-10-24T02:58:54.9090606Z help: Consider removing this import.
2026-10-24T02:58:54.9090611Z
2026-10-24T02:58:54.9090862Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9091010Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
2026-10-24T02:58:54.9091061Z 55 โ
2026-10-24T02:58:54.9091124Z 56 โ useEffect(() => {
2026-10-24T02:58:54.9091194Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9091491Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9091557Z 57 โ setDecodedSize(null);
2026-10-24T02:58:54.9091632Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9091796Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9091870Z 58 โ }, [props.sourceKey]);
2026-10-24T02:58:54.9091922Z โฐโโโโ
2026-10-24T02:58:54.9092504Z 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-24T02:58:54.9092821Z 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-24T02:58:54.9092824Z
2026-10-24T02:58:54.9093073Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9093219Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
2026-10-24T02:58:54.9093323Z 59 โ
2026-10-24T02:58:54.9093424Z 60 โ useEffect(() => {
2026-10-24T02:58:54.9093493Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9093617Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9093682Z 61 โ setFailedUri(null);
2026-10-24T02:58:54.9093755Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9093916Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9093981Z 62 โ }, [props.uri]);
2026-10-24T02:58:54.9094029Z โฐโโโโ
2026-10-24T02:58:54.9094615Z 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-24T02:58:54.9094932Z 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-24T02:58:54.9094934Z
2026-10-24T02:58:54.9095144Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T02:58:54.9095290Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
2026-10-24T02:58:54.9095411Z 6 โ import { parse, SvgAst, type JsxAST } from "react-native-svg";
2026-10-24T02:58:54.9095589Z 7 โ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
2026-10-24T02:58:54.9095677Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9095826Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T02:58:54.9095882Z 8 โ
2026-10-24T02:58:54.9095936Z โฐโโโโ
2026-10-24T02:58:54.9096032Z help: Consider removing this import.
2026-10-24T02:58:54.9096034Z
2026-10-24T02:58:54.9096230Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9096376Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
2026-10-24T02:58:54.9096443Z 57 โ setDecodedSize(null);
2026-10-24T02:58:54.9096511Z 58 โ }, [props.sourceKey]);
2026-10-24T02:58:54.9096592Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9096739Z ยท โฐโโ Unnecessary dependency `props.sourceKey`
2026-10-24T02:58:54.9096792Z 59 โ
2026-10-24T02:58:54.9096841Z โฐโโโโ
2026-10-24T02:58:54.9097135Z 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-24T02:58:54.9097445Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9097447Z
2026-10-24T02:58:54.9097641Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9097788Z โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
2026-10-24T02:58:54.9097855Z 61 โ setFailedUri(null);
2026-10-24T02:58:54.9097921Z 62 โ }, [props.uri]);
2026-10-24T02:58:54.9097991Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9098129Z ยท โฐโโ Unnecessary dependency `props.uri`
2026-10-24T02:58:54.9098181Z 63 โ
2026-10-24T02:58:54.9098231Z โฐโโโโ
2026-10-24T02:58:54.9098565Z 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-24T02:58:54.9098900Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9098903Z
2026-10-24T02:58:54.9099111Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T02:58:54.9099278Z โญโ[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:249:7]
2026-10-24T02:58:54.9099355Z 248 โ mountedRef.current = false;
2026-10-24T02:58:54.9099525Z 249 โ flow.setBranchQuery("");
2026-10-24T02:58:54.9099629Z ยท โโโฌโ
2026-10-24T02:58:54.9099765Z ยท โฐโโ Missing dependency `flow`
2026-10-24T02:58:54.9099822Z 250 โ };
2026-10-24T02:58:54.9099935Z 251 โ }, [flow.setBranchQuery]);
2026-10-24T02:58:54.9100025Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9100225Z ยท โฐโโ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
2026-10-24T02:58:54.9100276Z 252 โ
2026-10-24T02:58:54.9100329Z โฐโโโโ
2026-10-24T02:58:54.9100741Z 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-24T02:58:54.9101050Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9101055Z
2026-10-24T02:58:54.9101305Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9101462Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:285:5]
2026-10-24T02:58:54.9101581Z 283 โ const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
2026-10-24T02:58:54.9101646Z 284 โ useEffect(() => {
2026-10-24T02:58:54.9101717Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9101843Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9101926Z 285 โ setNow(new Date().toISOString());
2026-10-24T02:58:54.9101993Z ยท โโโโฌโโ
2026-10-24T02:58:54.9102153Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9102361Z 286 โ const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
2026-10-24T02:58:54.9102459Z โฐโโโโ
2026-10-24T02:58:54.9103043Z 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-24T02:58:54.9103362Z 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-24T02:58:54.9103365Z
2026-10-24T02:58:54.9103560Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9103722Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:365:25]
2026-10-24T02:58:54.9103855Z 364 โ // range) the boundary string is identical and the chain would die.
2026-10-24T02:58:54.9103944Z 365 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
2026-10-24T02:58:54.9104044Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9104204Z ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
2026-10-24T02:58:54.9104317Z 366 โ const listItems = ((): readonly SidebarListItem[] => {
2026-10-24T02:58:54.9104369Z โฐโโโโ
2026-10-24T02:58:54.9104655Z 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-24T02:58:54.9104961Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9104968Z
2026-10-24T02:58:54.9105131Z โ react(purity): Cannot call impure function during render
2026-10-24T02:58:54.9105289Z โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:356:53]
2026-10-24T02:58:54.9105375Z 355 โ if (Number.isNaN(wakeAtMs)) return;
2026-10-24T02:58:54.9105528Z 356 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
2026-10-24T02:58:54.9105645Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9105805Z ยท โฐโโ Cannot call impure function
2026-10-24T02:58:54.9105883Z 357 โ const id = setTimeout(() => {
2026-10-24T02:58:54.9105935Z โฐโโโโ
2026-10-24T02:58:54.9106217Z 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-24T02:58:54.9106508Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T02:58:54.9106510Z
2026-10-24T02:58:54.9106762Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9106909Z โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
2026-10-24T02:58:54.9107067Z 28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
2026-10-24T02:58:54.9107130Z 29 โ useEffect(() => {
2026-10-24T02:58:54.9107200Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9107374Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9107639Z 30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
2026-10-24T02:58:54.9107740Z ยท โโโโฌโโโ
2026-10-24T02:58:54.9107929Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9108001Z 31 โ }, [key, live, snapshot]);
2026-10-24T02:58:54.9108052Z โฐโโโโ
2026-10-24T02:58:54.9108632Z 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-24T02:58:54.9108951Z 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-24T02:58:54.9108955Z
2026-10-24T02:58:54.9109155Z โ unicorn(require-module-specifiers): Empty import specifier is not allowed
2026-10-24T02:58:54.9109319Z โญโ[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
2026-10-24T02:58:54.9109390Z 14 โ } from "@t3tools/contracts";
2026-10-24T02:58:54.9109479Z 15 โ import type {} from "@t3tools/contracts";
2026-10-24T02:58:54.9109546Z ยท โโ
2026-10-24T02:58:54.9109725Z 16 โ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
2026-10-24T02:58:54.9109777Z โฐโโโโ
2026-10-24T02:58:54.9109892Z help: Remove empty braces
2026-10-24T02:58:54.9109895Z
2026-10-24T02:58:54.9110154Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9110328Z โญโ[apps/mobile/src/features/threads/thread-inspector-content-stack.tsx:60:5]
2026-10-24T02:58:54.9110383Z 58 โ
2026-10-24T02:58:54.9110444Z 59 โ useEffect(() => {
2026-10-24T02:58:54.9110512Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9110640Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9110720Z 60 โ setMountedModes((current) => {
2026-10-24T02:58:54.9110797Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9110961Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9111044Z 61 โ if (current.has(props.mode)) {
2026-10-24T02:58:54.9111094Z โฐโโโโ
2026-10-24T02:58:54.9111681Z 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-24T02:58:54.9111997Z 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-24T02:58:54.9112000Z
2026-10-24T02:58:54.9112251Z โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.9112391Z โญโ[packages/provider-opencode/src/server/adapter.ts:3755:7]
2026-10-24T02:58:54.9112446Z 3754 โ
2026-10-24T02:58:54.9112692Z 3755 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
2026-10-24T02:58:54.9112793Z ยท โโโฌโโ
2026-10-24T02:58:54.9112916Z ยท โฐโโ 'layer' is declared here
2026-10-24T02:58:54.9112980Z 3756 โ Layer.effect(
2026-10-24T02:58:54.9113029Z โฐโโโโ
2026-10-24T02:58:54.9113132Z help: Consider removing this declaration.
2026-10-24T02:58:54.9113134Z
2026-10-24T02:58:54.9113295Z โ eslint(no-empty-pattern): Empty array binding pattern
2026-10-24T02:58:54.9113447Z โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1526:12]
2026-10-24T02:58:54.9113498Z 1525 โ
2026-10-24T02:58:54.9113567Z 1526 โ for (const [] of [
2026-10-24T02:58:54.9113637Z ยท โโ
2026-10-24T02:58:54.9113708Z 1527 โ ["github", "github.com"],
2026-10-24T02:58:54.9113764Z โฐโโโโ
2026-10-24T02:58:54.9114037Z help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
2026-10-24T02:58:54.9114040Z
2026-10-24T02:58:54.9114204Z โ eslint(no-empty-pattern): Empty object binding pattern
2026-10-24T02:58:54.9114390Z โญโ[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
2026-10-24T02:58:54.9114442Z 52 โ
2026-10-24T02:58:54.9114507Z 53 โ for (const {} of [
2026-10-24T02:58:54.9114575Z ยท โโ
2026-10-24T02:58:54.9114640Z 54 โ { healthy: true },
2026-10-24T02:58:54.9114690Z โฐโโโโ
2026-10-24T02:58:54.9114915Z help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
2026-10-24T02:58:54.9114917Z
2026-10-24T02:58:54.9115173Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9115339Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:215:7]
2026-10-24T02:58:54.9115391Z 211 โ };
2026-10-24T02:58:54.9115454Z 212 โ useEffect(() => {
2026-10-24T02:58:54.9115528Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9115657Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9115827Z 213 โ const inserted = ownerKey ? readComposerDraftSelection(ownerKey, draftMessage) : null;
2026-10-24T02:58:54.9115890Z 214 โ if (inserted) {
2026-10-24T02:58:54.9115966Z 215 โ setSelection((current) =>
2026-10-24T02:58:54.9116043Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9116213Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9116383Z 216 โ current.start === inserted.start && current.end === inserted.end ? current : inserted,
2026-10-24T02:58:54.9116433Z โฐโโโโ
2026-10-24T02:58:54.9117018Z 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-24T02:58:54.9117329Z 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-24T02:58:54.9117332Z
2026-10-24T02:58:54.9117712Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9117898Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:296:7]
2026-10-24T02:58:54.9117975Z 284 โ }, [hasWorkspaceSnapshot]);
2026-10-24T02:58:54.9118039Z 285 โ useEffect(() => {
2026-10-24T02:58:54.9118107Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9118233Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9118377Z 286 โ if (!environmentId || !projectCwd || !selectedProviderInstanceId) return;
2026-10-24T02:58:54.9118523Z 287 โ const key = `${environmentId}:${selectedProviderInstanceId}:${projectCwd}`;
2026-10-24T02:58:54.9118591Z 288 โ const now = Date.now();
2026-10-24T02:58:54.9118704Z 289 โ const lastRequest = workspaceRefreshKeyRef.current;
2026-10-24T02:58:54.9118761Z 290 โ if (
2026-10-24T02:58:54.9118842Z 291 โ lastRequest?.key === key &&
2026-10-24T02:58:54.9118978Z 292 โ now - lastRequest.requestedAt < PROVIDER_WORKSPACE_SNAPSHOT_TTL_MS
2026-10-24T02:58:54.9119033Z 293 โ )
2026-10-24T02:58:54.9119095Z 294 โ return;
2026-10-24T02:58:54.9119268Z 295 โ if (hasCurrentProviderWorkspaceSnapshot(selectedProviderStatus, projectCwd, now)) {
2026-10-24T02:58:54.9119353Z 296 โ setWorkspaceRefreshRetry(null);
2026-10-24T02:58:54.9119448Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9119620Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9119680Z 297 โ return;
2026-10-24T02:58:54.9119729Z โฐโโโโ
2026-10-24T02:58:54.9120363Z 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-24T02:58:54.9120679Z 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-24T02:58:54.9120682Z
2026-10-24T02:58:54.9120877Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9121035Z โญโ[apps/mobile/src/features/threads/use-composer-command-menu.ts:326:5]
2026-10-24T02:58:54.9121088Z 325 โ }, [
2026-10-24T02:58:54.9121151Z 326 โ draftMessage,
2026-10-24T02:58:54.9121226Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9121372Z ยท โฐโโ Unnecessary dependency `draftMessage`
2026-10-24T02:58:54.9121436Z 327 โ environmentId,
2026-10-24T02:58:54.9121488Z โฐโโโโ
2026-10-24T02:58:54.9121776Z 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-24T02:58:54.9122078Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9122080Z
2026-10-24T02:58:54.9122263Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T02:58:54.9122413Z โญโ[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
2026-10-24T02:58:54.9122577Z 601 โ const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
2026-10-24T02:58:54.9122702Z 602 โ const gesture = Gesture.Pan()
2026-10-24T02:58:54.9122821Z ยท โโฌโ
2026-10-24T02:58:54.9122958Z ยท โฐโโ `Pan` may be a component
2026-10-24T02:58:54.9123032Z 603 โ .enabled(!props.disabled)
2026-10-24T02:58:54.9123082Z โฐโโโโ
2026-10-24T02:58:54.9123349Z help: Render `Pan` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T02:58:54.9123782Z note: `Pan` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T02:58:54.9123785Z
2026-10-24T02:58:54.9124039Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9124197Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T02:58:54.9124259Z 259 โ .join("|");
2026-10-24T02:58:54.9124322Z 260 โ useEffect(() => {
2026-10-24T02:58:54.9124392Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9124519Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9124580Z 261 โ stop();
2026-10-24T02:58:54.9124646Z ยท โโโฌโ
2026-10-24T02:58:54.9124807Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9124872Z 262 โ }, [orderVersion]);
2026-10-24T02:58:54.9124923Z โฐโโโโ
2026-10-24T02:58:54.9125508Z 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-24T02:58:54.9125823Z 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-24T02:58:54.9125825Z
2026-10-24T02:58:54.9126036Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T02:58:54.9126190Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
2026-10-24T02:58:54.9126254Z 260 โ useEffect(() => {
2026-10-24T02:58:54.9126311Z 261 โ stop();
2026-10-24T02:58:54.9126379Z ยท โโโฌโ
2026-10-24T02:58:54.9126505Z ยท โฐโโ Missing dependency `stop`
2026-10-24T02:58:54.9126572Z 262 โ }, [orderVersion]);
2026-10-24T02:58:54.9126647Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9126791Z ยท โฐโโ Unnecessary dependency `orderVersion`
2026-10-24T02:58:54.9126855Z 263 โ useEffect(
2026-10-24T02:58:54.9126906Z โฐโโโโ
2026-10-24T02:58:54.9127314Z 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-24T02:58:54.9127618Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9127620Z
2026-10-24T02:58:54.9127809Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9127992Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
2026-10-24T02:58:54.9128068Z 95 โ const latest = useRef(props);
2026-10-24T02:58:54.9128134Z 96 โ latest.current = props;
2026-10-24T02:58:54.9128238Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T02:58:54.9128412Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T02:58:54.9128524Z ยท โฐโโ This value is a ref
2026-10-24T02:58:54.9128590Z 97 โ const gesture = useMemo(
2026-10-24T02:58:54.9128641Z โฐโโโโ
2026-10-24T02:58:54.9129108Z 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-24T02:58:54.9129393Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9129395Z
2026-10-24T02:58:54.9129533Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9129690Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
2026-10-24T02:58:54.9129755Z 103 โ .runOnJS(true)
2026-10-24T02:58:54.9129875Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T02:58:54.9129990Z ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9130191Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T02:58:54.9130325Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9130376Z โฐโโโโ
2026-10-24T02:58:54.9130829Z 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-24T02:58:54.9131111Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9131113Z
2026-10-24T02:58:54.9131253Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9131407Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
2026-10-24T02:58:54.9131548Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T02:58:54.9131702Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9131838Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9132040Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T02:58:54.9132162Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9132213Z โฐโโโโ
2026-10-24T02:58:54.9132660Z 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-24T02:58:54.9132948Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9132954Z
2026-10-24T02:58:54.9133092Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9133247Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
2026-10-24T02:58:54.9133373Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9133492Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9133629Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9133828Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T02:58:54.9133956Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T02:58:54.9134009Z โฐโโโโ
2026-10-24T02:58:54.9134459Z 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-24T02:58:54.9134745Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9134747Z
2026-10-24T02:58:54.9134885Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9135040Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
2026-10-24T02:58:54.9135157Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9135281Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T02:58:54.9135416Z ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9135616Z ยท โฐโโ Passing a ref to a function may read its value during render
2026-10-24T02:58:54.9135682Z 108 โ [props.disabled],
2026-10-24T02:58:54.9135733Z โฐโโโโ
2026-10-24T02:58:54.9136183Z 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-24T02:58:54.9136513Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9136545Z
2026-10-24T02:58:54.9136682Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9136835Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
2026-10-24T02:58:54.9136946Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T02:58:54.9137049Z 249 โ latest.current = { rows, planners, moveThread };
2026-10-24T02:58:54.9137151Z ยท โโโโฌโโโโโโโฌโโโ
2026-10-24T02:58:54.9137325Z ยท โ โฐโโ Cannot update ref value during render
2026-10-24T02:58:54.9137437Z ยท โฐโโ This value is a ref
2026-10-24T02:58:54.9137490Z 250 โ
2026-10-24T02:58:54.9137541Z โฐโโโโ
2026-10-24T02:58:54.9137992Z 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-24T02:58:54.9138276Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9138278Z
2026-10-24T02:58:54.9138417Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9138573Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
2026-10-24T02:58:54.9138690Z 246 โ const [preview, setPreview] = useState<Drag | null>(null);
2026-10-24T02:58:54.9138800Z 247 โ const translateY = useRef(new Animated.Value(0)).current;
2026-10-24T02:58:54.9138924Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9139089Z ยท โฐโโ Cannot access ref value during render
2026-10-24T02:58:54.9139198Z 248 โ const latest = useRef({ rows, planners, moveThread });
2026-10-24T02:58:54.9139247Z โฐโโโโ
2026-10-24T02:58:54.9139797Z 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-24T02:58:54.9140117Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9140120Z
2026-10-24T02:58:54.9140283Z โ react(purity): Cannot call impure function during render
2026-10-24T02:58:54.9140442Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
2026-10-24T02:58:54.9140506Z 323 โ update(0);
2026-10-24T02:58:54.9140584Z 324 โ let last = performance.now();
2026-10-24T02:58:54.9140679Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9140814Z ยท โฐโโ Cannot call impure function
2026-10-24T02:58:54.9140882Z 325 โ const tick = () => {
2026-10-24T02:58:54.9140932Z โฐโโโโ
2026-10-24T02:58:54.9141224Z help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
2026-10-24T02:58:54.9141512Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
2026-10-24T02:58:54.9141597Z
2026-10-24T02:58:54.9141814Z โ react(capitalized-calls): Capitalized function called without JSX
2026-10-24T02:58:54.9141970Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
2026-10-24T02:58:54.9142028Z 98 โ () =>
2026-10-24T02:58:54.9142093Z 99 โ Gesture.Pan()
2026-10-24T02:58:54.9142166Z ยท โโฌโ
2026-10-24T02:58:54.9142294Z ยท โฐโโ `Pan` may be a component
2026-10-24T02:58:54.9142372Z 100 โ .enabled(!props.disabled)
2026-10-24T02:58:54.9142423Z โฐโโโโ
2026-10-24T02:58:54.9142687Z help: Render `Pan` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
2026-10-24T02:58:54.9143124Z note: `Pan` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
2026-10-24T02:58:54.9143130Z
2026-10-24T02:58:54.9143312Z โ react(memo-dependencies): Found missing memoization dependencies
2026-10-24T02:58:54.9143466Z โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
2026-10-24T02:58:54.9143532Z 103 โ .runOnJS(true)
2026-10-24T02:58:54.9143626Z 104 โ .onStart(() => latest.current.onStart())
2026-10-24T02:58:54.9143713Z ยท โโโโฌโโ
2026-10-24T02:58:54.9144139Z ยท โฐโโ Missing dependency `latest`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
2026-10-24T02:58:54.9144270Z 105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9144389Z 106 โ .onEnd((event) => latest.current.onMove(event.translationY))
2026-10-24T02:58:54.9144510Z 107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
2026-10-24T02:58:54.9144577Z 108 โ [props.disabled],
2026-10-24T02:58:54.9144656Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9144837Z ยท โฐโโ This dependency list is missing values used by the callback
2026-10-24T02:58:54.9144892Z 109 โ );
2026-10-24T02:58:54.9144942Z โฐโโโโ
2026-10-24T02:58:54.9145145Z help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
2026-10-24T02:58:54.9145456Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9145463Z
2026-10-24T02:58:54.9145714Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9145848Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2139:5]
2026-10-24T02:58:54.9145905Z 2137 โ );
2026-10-24T02:58:54.9145971Z 2138 โ useEffect(() => {
2026-10-24T02:58:54.9146042Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9146171Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9146246Z 2139 โ setExpandedVideo(null);
2026-10-24T02:58:54.9146325Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9146545Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9146648Z 2140 โ setExpandedFile(null);
2026-10-24T02:58:54.9146699Z โฐโโโโ
2026-10-24T02:58:54.9147285Z 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-24T02:58:54.9147601Z 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-24T02:58:54.9147603Z
2026-10-24T02:58:54.9147826Z โ eslint(no-unused-vars): Identifier 'isMarkdownFileLinkLabel' is imported but never used.
2026-10-24T02:58:54.9147963Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:66:10]
2026-10-24T02:58:54.9148102Z 65 โ import { resolveAssetUrl } from "@t3tools/client-runtime/state/assets";
2026-10-24T02:58:54.9148240Z 66 โ import { isMarkdownFileLinkLabel } from "@t3tools/shared/markdownLinks";
2026-10-24T02:58:54.9148333Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9148496Z ยท โฐโโ 'isMarkdownFileLinkLabel' is imported here
2026-10-24T02:58:54.9148650Z 67 โ import { formatAttachmentSize } from "@t3tools/client-runtime/state/attachments";
2026-10-24T02:58:54.9148702Z โฐโโโโ
2026-10-24T02:58:54.9148797Z help: Consider removing this import.
2026-10-24T02:58:54.9148800Z
2026-10-24T02:58:54.9149103Z โ eslint(no-unused-vars): Identifier 'createContext' is imported but never used.
2026-10-24T02:58:54.9149236Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:92:3]
2026-10-24T02:58:54.9149295Z 91 โ import {
2026-10-24T02:58:54.9149356Z 92 โ createContext,
2026-10-24T02:58:54.9149431Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9149563Z ยท โฐโโ 'createContext' is imported here
2026-10-24T02:58:54.9149619Z 93 โ memo,
2026-10-24T02:58:54.9149667Z โฐโโโโ
2026-10-24T02:58:54.9149763Z help: Consider removing this import.
2026-10-24T02:58:54.9149765Z
2026-10-24T02:58:54.9150144Z โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
2026-10-24T02:58:54.9150277Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:108:3]
2026-10-24T02:58:54.9150333Z 107 โ import {
2026-10-24T02:58:54.9150401Z 108 โ ActivityIndicator,
2026-10-24T02:58:54.9150530Z ยท โโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9150699Z ยท โฐโโ 'ActivityIndicator' is imported here
2026-10-24T02:58:54.9150754Z 109 โ Image,
2026-10-24T02:58:54.9150804Z โฐโโโโ
2026-10-24T02:58:54.9150897Z help: Consider removing this import.
2026-10-24T02:58:54.9150900Z
2026-10-24T02:58:54.9151095Z โ eslint(no-unused-vars): Identifier 'ScrollView' is imported but never used.
2026-10-24T02:58:54.9151223Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:115:3]
2026-10-24T02:58:54.9151286Z 114 โ Pressable,
2026-10-24T02:58:54.9151348Z 115 โ ScrollView,
2026-10-24T02:58:54.9151421Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9151548Z ยท โฐโโ 'ScrollView' is imported here
2026-10-24T02:58:54.9151609Z 116 โ StyleSheet,
2026-10-24T02:58:54.9151664Z โฐโโโโ
2026-10-24T02:58:54.9151760Z help: Consider removing this import.
2026-10-24T02:58:54.9151762Z
2026-10-24T02:58:54.9151953Z โ eslint(no-unused-vars): Identifier 'NativeText' is imported but never used.
2026-10-24T02:58:54.9152083Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:117:11]
2026-10-24T02:58:54.9152142Z 116 โ StyleSheet,
2026-10-24T02:58:54.9152208Z 117 โ Text as NativeText,
2026-10-24T02:58:54.9152284Z ยท โโโโโโฌโโโโ
2026-10-24T02:58:54.9152417Z ยท โฐโโ 'NativeText' is imported here
2026-10-24T02:58:54.9152481Z 118 โ type ColorValue,
2026-10-24T02:58:54.9152531Z โฐโโโโ
2026-10-24T02:58:54.9152622Z help: Consider removing this import.
2026-10-24T02:58:54.9152624Z
2026-10-24T02:58:54.9152837Z โ eslint(no-unused-vars): Identifier 'tryOpenExternalUrl' is imported but never used.
2026-10-24T02:58:54.9152968Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:140:10]
2026-10-24T02:58:54.9153101Z 139 โ import { copyTextWithHaptic } from "../../lib/copyTextWithHaptic";
2026-10-24T02:58:54.9153223Z 140 โ import { tryOpenExternalUrl } from "../../lib/openExternalUrl";
2026-10-24T02:58:54.9153310Z ยท โโโโโโโโโโฌโโโโโโโโ
2026-10-24T02:58:54.9153459Z ยท โฐโโ 'tryOpenExternalUrl' is imported here
2026-10-24T02:58:54.9153603Z 141 โ import { downloadAndShareAttachment } from "../../lib/attachmentDownload";
2026-10-24T02:58:54.9153652Z โฐโโโโ
2026-10-24T02:58:54.9153746Z help: Consider removing this import.
2026-10-24T02:58:54.9153748Z
2026-10-24T02:58:54.9153965Z โ eslint(no-unused-vars): Identifier 'faviconUrlForOrigin' is imported but never used.
2026-10-24T02:58:54.9154100Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:143:10]
2026-10-24T02:58:54.9154231Z 142 โ import { hasWideMarkdownBlock } from "../../lib/wideMarkdownBlocks";
2026-10-24T02:58:54.9154353Z 143 โ import { faviconUrlForOrigin } from "@t3tools/shared/favicon";
2026-10-24T02:58:54.9154441Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9154591Z ยท โฐโโ 'faviconUrlForOrigin' is imported here
2026-10-24T02:58:54.9154647Z 144 โ import {
2026-10-24T02:58:54.9154700Z โฐโโโโ
2026-10-24T02:58:54.9154794Z help: Consider removing this import.
2026-10-24T02:58:54.9154796Z
2026-10-24T02:58:54.9155055Z โ eslint(no-unused-vars): Identifier 'MediaVideoPlayer' is imported but never used.
2026-10-24T02:58:54.9155211Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:157:10]
2026-10-24T02:58:54.9155354Z 156 โ import { VideoAttachmentTile } from "../../components/VideoAttachmentTile";
2026-10-24T02:58:54.9155487Z 157 โ import { MediaVideoPlayer } from "../../components/MediaVideoPlayer";
2026-10-24T02:58:54.9155574Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9155720Z ยท โฐโโ 'MediaVideoPlayer' is imported here
2026-10-24T02:58:54.9155855Z 158 โ import { resolveMarkdownMediaPreview } from "../../lib/markdownMedia";
2026-10-24T02:58:54.9155907Z โฐโโโโ
2026-10-24T02:58:54.9156000Z help: Consider removing this import.
2026-10-24T02:58:54.9156002Z
2026-10-24T02:58:54.9156220Z โ eslint(no-unused-vars): Identifier 'mediaVideoPreviewUri' is imported but never used.
2026-10-24T02:58:54.9156348Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:161:3]
2026-10-24T02:58:54.9156429Z 160 โ attachmentVideoPreviewSource,
2026-10-24T02:58:54.9156499Z 161 โ mediaVideoPreviewUri,
2026-10-24T02:58:54.9156581Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9156727Z ยท โฐโโ 'mediaVideoPreviewUri' is imported here
2026-10-24T02:58:54.9156798Z 162 โ mediaVideoThumbnailKey,
2026-10-24T02:58:54.9156849Z โฐโโโโ
2026-10-24T02:58:54.9156943Z help: Consider removing this import.
2026-10-24T02:58:54.9156945Z
2026-10-24T02:58:54.9157161Z โ eslint(no-unused-vars): Identifier 'mediaVideoThumbnailKey' is imported but never used.
2026-10-24T02:58:54.9157290Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:162:3]
2026-10-24T02:58:54.9157363Z 161 โ mediaVideoPreviewUri,
2026-10-24T02:58:54.9157436Z 162 โ mediaVideoThumbnailKey,
2026-10-24T02:58:54.9157520Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9157672Z ยท โฐโโ 'mediaVideoThumbnailKey' is imported here
2026-10-24T02:58:54.9157750Z 163 โ type MediaVideoPreviewSource,
2026-10-24T02:58:54.9157801Z โฐโโโโ
2026-10-24T02:58:54.9157892Z help: Consider removing this import.
2026-10-24T02:58:54.9157894Z
2026-10-24T02:58:54.9158103Z โ eslint(no-unused-vars): Type 'MediaVideoPreviewSource' is imported but never used.
2026-10-24T02:58:54.9158231Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:163:8]
2026-10-24T02:58:54.9158301Z 162 โ mediaVideoThumbnailKey,
2026-10-24T02:58:54.9158379Z 163 โ type MediaVideoPreviewSource,
2026-10-24T02:58:54.9158478Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9158639Z ยท โฐโโ 'MediaVideoPreviewSource' is imported here
2026-10-24T02:58:54.9158725Z 164 โ } from "../../lib/videoPreviewSource";
2026-10-24T02:58:54.9158773Z โฐโโโโ
2026-10-24T02:58:54.9158866Z help: Consider removing this import.
2026-10-24T02:58:54.9158868Z
2026-10-24T02:58:54.9159062Z โ eslint(no-unused-vars): Type 'ReviewDiffTheme' is imported but never used.
2026-10-24T02:58:54.9159191Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:171:15]
2026-10-24T02:58:54.9159360Z 170 โ import { parseReviewCommentMessageSegments } from "../review/reviewCommentSelection";
2026-10-24T02:58:54.9159499Z 171 โ import type { ReviewDiffTheme } from "../review/shikiReviewHighlighter";
2026-10-24T02:58:54.9159639Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9159811Z ยท โฐโโ 'ReviewDiffTheme' is imported here
2026-10-24T02:58:54.9159902Z 172 โ import {
2026-10-24T02:58:54.9159958Z โฐโโโโ
2026-10-24T02:58:54.9160050Z help: Consider removing this import.
2026-10-24T02:58:54.9160052Z
2026-10-24T02:58:54.9160273Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownFontSizes' is imported but never used.
2026-10-24T02:58:54.9160401Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:186:3]
2026-10-24T02:58:54.9160457Z 185 โ import {
2026-10-24T02:58:54.9160530Z 186 โ resolveMarkdownFontSizes,
2026-10-24T02:58:54.9160619Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9160778Z ยท โฐโโ 'resolveMarkdownFontSizes' is imported here
2026-10-24T02:58:54.9160864Z 187 โ resolveNativeMarkdownTypography,
2026-10-24T02:58:54.9160915Z โฐโโโโ
2026-10-24T02:58:54.9161007Z help: Consider removing this import.
2026-10-24T02:58:54.9161009Z
2026-10-24T02:58:54.9161222Z โ eslint(no-unused-vars): Identifier 'markdownLinkIconSource' is imported but never used.
2026-10-24T02:58:54.9161350Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:191:10]
2026-10-24T02:58:54.9161480Z 190 โ import { PierreEntryIcon } from "../../components/PierreEntryIcon";
2026-10-24T02:58:54.9161615Z 191 โ import { markdownLinkIconSource } from "../../lib/markdownLinkIcons";
2026-10-24T02:58:54.9161707Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9161863Z ยท โฐโโ 'markdownLinkIconSource' is imported here
2026-10-24T02:58:54.9161926Z 192 โ import {
2026-10-24T02:58:54.9161979Z โฐโโโโ
2026-10-24T02:58:54.9162071Z help: Consider removing this import.
2026-10-24T02:58:54.9162074Z
2026-10-24T02:58:54.9162322Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownInlineCodePresentation' is imported but never used.
2026-10-24T02:58:54.9162449Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:194:3]
2026-10-24T02:58:54.9162526Z 193 โ normalizeNativeMarkdownUrl,
2026-10-24T02:58:54.9162619Z 194 โ resolveMarkdownInlineCodePresentation,
2026-10-24T02:58:54.9162725Z ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9162916Z ยท โฐโโ 'resolveMarkdownInlineCodePresentation' is imported here
2026-10-24T02:58:54.9162988Z 195 โ resolveMarkdownLinkIcon,
2026-10-24T02:58:54.9163045Z โฐโโโโ
2026-10-24T02:58:54.9163138Z help: Consider removing this import.
2026-10-24T02:58:54.9163140Z
2026-10-24T02:58:54.9163358Z โ eslint(no-unused-vars): Identifier 'resolveMarkdownLinkIcon' is imported but never used.
2026-10-24T02:58:54.9163486Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:195:3]
2026-10-24T02:58:54.9163578Z 194 โ resolveMarkdownInlineCodePresentation,
2026-10-24T02:58:54.9163648Z 195 โ resolveMarkdownLinkIcon,
2026-10-24T02:58:54.9163735Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9163887Z ยท โฐโโ 'resolveMarkdownLinkIcon' is imported here
2026-10-24T02:58:54.9163971Z 196 โ resolveMarkdownLinkPresentation,
2026-10-24T02:58:54.9164021Z โฐโโโโ
2026-10-24T02:58:54.9164113Z help: Consider removing this import.
2026-10-24T02:58:54.9164166Z
2026-10-24T02:58:54.9164413Z โ eslint(no-unused-vars): Identifier 'useMarkdownCodeHighlight' is imported but never used.
2026-10-24T02:58:54.9164541Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:234:10]
2026-10-24T02:58:54.9164640Z 233 โ import { ThreadMcpApp } from "./McpAppWebView";
2026-10-24T02:58:54.9164781Z 234 โ import { useMarkdownCodeHighlight } from "./markdownCodeHighlightState";
2026-10-24T02:58:54.9164878Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9165041Z ยท โฐโโ 'useMarkdownCodeHighlight' is imported here
2026-10-24T02:58:54.9165099Z 235 โ import {
2026-10-24T02:58:54.9165147Z โฐโโโโ
2026-10-24T02:58:54.9165240Z help: Consider removing this import.
2026-10-24T02:58:54.9165242Z
2026-10-24T02:58:54.9165451Z โ eslint(no-unused-vars): Identifier 'useAssetUrlState' is imported but never used.
2026-10-24T02:58:54.9165580Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:238:3]
2026-10-24T02:58:54.9165642Z 237 โ useAssetUrl,
2026-10-24T02:58:54.9165709Z 238 โ useAssetUrlState,
2026-10-24T02:58:54.9165788Z ยท โโโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9165927Z ยท โฐโโ 'useAssetUrlState' is imported here
2026-10-24T02:58:54.9165993Z 239 โ useRefreshAssetUrl,
2026-10-24T02:58:54.9166044Z โฐโโโโ
2026-10-24T02:58:54.9166136Z help: Consider removing this import.
2026-10-24T02:58:54.9166139Z
2026-10-24T02:58:54.9166335Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9166470Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2141:7]
2026-10-24T02:58:54.9166546Z 2140 โ setExpandedFile(null);
2026-10-24T02:58:54.9166701Z 2141 โ }, [props.environmentId, props.threadId, props.contentPresentation.kind]);
2026-10-24T02:58:54.9166915Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโฌโโโโโโ โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9167200Z ยท โ โ โฐโโ Unnecessary dependency `props.contentPresentation.kind`
2026-10-24T02:58:54.9167394Z ยท โ โฐโโ Unnecessary dependency `props.threadId`
2026-10-24T02:58:54.9167554Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-24T02:58:54.9167743Z 2142 โ const horizontalPadding = props.layoutVariant === "split" ? 20 : 16;
2026-10-24T02:58:54.9167831Z โฐโโโโ
2026-10-24T02:58:54.9168120Z 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-24T02:58:54.9168430Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9168432Z
2026-10-24T02:58:54.9168628Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9168761Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2609:7]
2026-10-24T02:58:54.9168854Z 2608 โ reportHeaderMaterialVisibility(false);
2026-10-24T02:58:54.9168971Z 2609 โ }, [feedThreadKey, reportHeaderMaterialVisibility]);
2026-10-24T02:58:54.9169053Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9169206Z ยท โฐโโ Unnecessary dependency `feedThreadKey`
2026-10-24T02:58:54.9169258Z 2610 โ
2026-10-24T02:58:54.9169311Z โฐโโโโ
2026-10-24T02:58:54.9169603Z 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-24T02:58:54.9169933Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9169936Z
2026-10-24T02:58:54.9170132Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9170270Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2625:7]
2026-10-24T02:58:54.9170330Z 2624 โ }
2026-10-24T02:58:54.9170459Z 2625 โ }, [listMountKey, props.contentInsetEndAdjustment, listRef]);
2026-10-24T02:58:54.9170536Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9170679Z ยท โฐโโ Unnecessary dependency `listMountKey`
2026-10-24T02:58:54.9170733Z 2626 โ
2026-10-24T02:58:54.9170787Z โฐโโโโ
2026-10-24T02:58:54.9171069Z 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-24T02:58:54.9171372Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9171374Z
2026-10-24T02:58:54.9171575Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9171709Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:2782:7]
2026-10-24T02:58:54.9171766Z 2781 โ }
2026-10-24T02:58:54.9171944Z 2782 โ }, [expandedTurnIds, expandedWorkGroups, expandedWorkRows, settleDisclosureAfterLayout]);
2026-10-24T02:58:54.9172135Z ยท โโโโโโโโฌโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9172379Z ยท โ โ โฐโโ Unnecessary dependency `expandedWorkRows`
2026-10-24T02:58:54.9172576Z ยท โ โฐโโ Unnecessary dependency `expandedWorkGroups`
2026-10-24T02:58:54.9172776Z ยท โฐโโ Unnecessary dependency `expandedTurnIds`
2026-10-24T02:58:54.9172864Z 2783 โ
2026-10-24T02:58:54.9172916Z โฐโโโโ
2026-10-24T02:58:54.9173201Z 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-24T02:58:54.9173503Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9173505Z
2026-10-24T02:58:54.9173680Z โ react(memo-dependencies): Found extra memoization dependencies
2026-10-24T02:58:54.9173812Z โญโ[apps/mobile/src/features/threads/ThreadFeed.tsx:613:9]
2026-10-24T02:58:54.9173870Z 612 โ };
2026-10-24T02:58:54.9173983Z 613 โ }, [props.environmentId, attachment.id, httpBaseUrl]),
2026-10-24T02:58:54.9174169Z ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโ
2026-10-24T02:58:54.9174406Z ยท โ โ โฐโโ Unnecessary dependency `httpBaseUrl`
2026-10-24T02:58:54.9174598Z ยท โ โฐโโ Unnecessary dependency `attachment.id`
2026-10-24T02:58:54.9174759Z ยท โฐโโ Unnecessary dependency `props.environmentId`
2026-10-24T02:58:54.9174813Z 614 โ );
2026-10-24T02:58:54.9174862Z โฐโโโโ
2026-10-24T02:58:54.9175168Z 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-24T02:58:54.9175478Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9175483Z
2026-10-24T02:58:54.9175662Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9175831Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
2026-10-24T02:58:54.9175913Z 554 โ assert.deepStrictEqual(
2026-10-24T02:58:54.9176075Z 555 โ (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T02:58:54.9176194Z ยท โฌ
2026-10-24T02:58:54.9176352Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9176418Z 556 โ [
2026-10-24T02:58:54.9176472Z โฐโโโโ
2026-10-24T02:58:54.9176575Z help: Consider removing this parameter.
2026-10-24T02:58:54.9176577Z
2026-10-24T02:58:54.9176754Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9176924Z โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
2026-10-24T02:58:54.9177006Z 1154 โ assert.deepStrictEqual(
2026-10-24T02:58:54.9177165Z 1155 โ (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
2026-10-24T02:58:54.9177284Z ยท โฌ
2026-10-24T02:58:54.9177495Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9177586Z 1156 โ [
2026-10-24T02:58:54.9177638Z โฐโโโโ
2026-10-24T02:58:54.9177738Z help: Consider removing this parameter.
2026-10-24T02:58:54.9177741Z
2026-10-24T02:58:54.9178191Z โ 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-24T02:58:54.9178311Z โญโ[packages/effect-acp/src/errors.test.ts:129:28]
2026-10-24T02:58:54.9178403Z 128 โ const secret = "acp-summary-secret";
2026-10-24T02:58:54.9178511Z 129 โ const cause = yield* Schema.decodeUnknownEffect(
2026-10-24T02:58:54.9178627Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9178694Z 130 โ Schema.Struct({
2026-10-24T02:58:54.9178749Z โฐโโโโ
2026-10-24T02:58:54.9178754Z
2026-10-24T02:58:54.9179080Z โ 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-24T02:58:54.9179196Z โญโ[packages/effect-acp/src/schema.test.ts:18:12]
2026-10-24T02:58:54.9179351Z 17 โ const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
2026-10-24T02:58:54.9179489Z 18 โ expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
2026-10-24T02:58:54.9179626Z ยท โโโโโโโโโ
2026-10-24T02:58:54.9179687Z 19 โ expect(
2026-10-24T02:58:54.9179737Z โฐโโโโ
2026-10-24T02:58:54.9179740Z
2026-10-24T02:58:54.9180108Z โ 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-24T02:58:54.9180227Z โญโ[packages/effect-acp/src/schema.test.ts:20:7]
2026-10-24T02:58:54.9180286Z 19 โ expect(
2026-10-24T02:58:54.9180450Z 20 โ Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
2026-10-24T02:58:54.9180524Z ยท โโโโโโโโโ
2026-10-24T02:58:54.9180587Z 21 โ ).toBe(true);
2026-10-24T02:58:54.9180637Z โฐโโโโ
2026-10-24T02:58:54.9180640Z
2026-10-24T02:58:54.9180848Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T02:58:54.9180990Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:773:7]
2026-10-24T02:58:54.9181090Z 772 โ if (settingsSheetPresentation.isActive) {
2026-10-24T02:58:54.9181221Z 773 โ settingsRoutePresentation.present(settingsRouteSession);
2026-10-24T02:58:54.9181314Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T02:58:54.9181483Z ยท โฐโโ Missing dependency `settingsRoutePresentation`
2026-10-24T02:58:54.9181538Z 774 โ }
2026-10-24T02:58:54.9181736Z 775 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
2026-10-24T02:58:54.9181840Z ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9182115Z ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
2026-10-24T02:58:54.9182179Z 776 โ
2026-10-24T02:58:54.9182270Z โฐโโโโ
2026-10-24T02:58:54.9182747Z 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-24T02:58:54.9183091Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9183094Z
2026-10-24T02:58:54.9183248Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9183389Z โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:391:5]
2026-10-24T02:58:54.9183546Z 387 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
2026-10-24T02:58:54.9183678Z 388 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
2026-10-24T02:58:54.9183767Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9183923Z ยท โฐโโ `animatedBorderRadius` originates here
2026-10-24T02:58:54.9184080Z 389 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
2026-10-24T02:58:54.9184149Z 390 โ useLayoutEffect(() => {
2026-10-24T02:58:54.9184248Z 391 โ animatedBorderRadius.value = shouldAnimate
2026-10-24T02:58:54.9184334Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9184486Z ยท โฐโโ `animatedBorderRadius` cannot be modified
2026-10-24T02:58:54.9184572Z 392 โ ? withTiming(targetBorderRadius, {
2026-10-24T02:58:54.9184623Z โฐโโโโ
2026-10-24T02:58:54.9184882Z 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-24T02:58:54.9185187Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9185193Z
2026-10-24T02:58:54.9185556Z โ 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-24T02:58:54.9185672Z โญโ[packages/effect-acp/src/client.ts:1269:11]
2026-10-24T02:58:54.9185819Z 1268 โ extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
2026-10-24T02:58:54.9185988Z 1269 โ Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
2026-10-24T02:58:54.9186091Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9186232Z 1270 โ Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
2026-10-24T02:58:54.9186284Z โฐโโโโ
2026-10-24T02:58:54.9186287Z
2026-10-24T02:58:54.9186479Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9186739Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
2026-10-24T02:58:54.9186912Z 151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
2026-10-24T02:58:54.9186989Z 152 โ {props.children(open)}
2026-10-24T02:58:54.9187076Z ยท โโโฌโ
2026-10-24T02:58:54.9187232Z ยท โฐโโ Cannot access ref value during render
2026-10-24T02:58:54.9187291Z 153 โ </View>
2026-10-24T02:58:54.9187342Z โฐโโโโ
2026-10-24T02:58:54.9187804Z 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-24T02:58:54.9188092Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9188095Z
2026-10-24T02:58:54.9188288Z โ react(memo-dependencies): Found missing/extra memoization dependencies
2026-10-24T02:58:54.9188431Z โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
2026-10-24T02:58:54.9188513Z 139 โ if (action.id !== undefined) {
2026-10-24T02:58:54.9188590Z 140 โ props.onPressAction?.({
2026-10-24T02:58:54.9188661Z ยท โโโฌโโ
2026-10-24T02:58:54.9188787Z ยท โฐโโ Missing dependency `props`
2026-10-24T02:58:54.9188877Z 141 โ nativeEvent: { event: action.id },
2026-10-24T02:58:54.9189025Z 142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
2026-10-24T02:58:54.9189083Z 143 โ }
2026-10-24T02:58:54.9189137Z 144 โ },
2026-10-24T02:58:54.9189217Z 145 โ [close, props.onPressAction],
2026-10-24T02:58:54.9189309Z ยท โโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9189518Z ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
2026-10-24T02:58:54.9189571Z 146 โ );
2026-10-24T02:58:54.9189623Z โฐโโโโ
2026-10-24T02:58:54.9190131Z 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-24T02:58:54.9190443Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9190447Z
2026-10-24T02:58:54.9190610Z โ eslint(no-control-regex): Unexpected control character
2026-10-24T02:58:54.9190796Z โญโ[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
2026-10-24T02:58:54.9190932Z 219 โ <Text selectable className="font-mono text-sm text-foreground">
2026-10-24T02:58:54.9191069Z 220 โ {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
2026-10-24T02:58:54.9191175Z ยท โโโฌโ
2026-10-24T02:58:54.9191335Z ยท โฐโโ 'U+001B' is a control character.
2026-10-24T02:58:54.9191448Z 221 โ </Text>
2026-10-24T02:58:54.9191532Z โฐโโโโ
2026-10-24T02:58:54.9191757Z help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
2026-10-24T02:58:54.9191759Z
2026-10-24T02:58:54.9191979Z โ eslint(no-unused-vars): Function 'assertUserMessagesExclude' is declared but never used.
2026-10-24T02:58:54.9192139Z โญโ[apps/server/src/orchestration-v2/testkit/fixtures/shared.ts:1398:10]
2026-10-24T02:58:54.9192193Z 1397 โ
2026-10-24T02:58:54.9192281Z 1398 โ function assertUserMessagesExclude(
2026-10-24T02:58:54.9192381Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T02:58:54.9192546Z ยท โฐโโ 'assertUserMessagesExclude' is declared here
2026-10-24T02:58:54.9192661Z 1399 โ projection: OrchestrationV2ThreadProjection,
2026-10-24T02:58:54.9192715Z โฐโโโโ
2026-10-24T02:58:54.9192815Z help: Consider removing this declaration.
2026-10-24T02:58:54.9192820Z
2026-10-24T02:58:54.9193276Z โ 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-24T02:58:54.9193443Z โญโ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:566:7]
2026-10-24T02:58:54.9193544Z 565 โ let afterSequence = created[0]!.sequence;
2026-10-24T02:58:54.9193738Z 566 โ โญโโถ for (let index = 1; index <= 32; index += 1) {
2026-10-24T02:58:54.9193835Z 567 โ โ const nextEvent = {
2026-10-24T02:58:54.9193997Z 568 โ โ id: EventId.make(`event:foundation-stream-race:${index}`),
2026-10-24T02:58:54.9194128Z 569 โ โ type: "thread.metadata-updated" as const,
2026-10-24T02:58:54.9194217Z 570 โ โ threadId,
2026-10-24T02:58:54.9194317Z 571 โ โ providerInstanceId,
2026-10-24T02:58:54.9194415Z 572 โ โ occurredAt: now,
2026-10-24T02:58:54.9194559Z 573 โ โ payload: { ...thread, title: `Race update ${index}` },
2026-10-24T02:58:54.9194685Z 574 โ โ } satisfies OrchestrationV2DomainEvent;
2026-10-24T02:58:54.9194796Z 575 โ โ const reader = yield* eventSink
2026-10-24T02:58:54.9194916Z 576 โ โ .stream({ threadId, afterSequence })
2026-10-24T02:58:54.9195051Z 577 โ โ .pipe(Stream.runHead, Effect.forkChild);
2026-10-24T02:58:54.9195157Z 578 โ โ yield* Effect.yieldNow;
2026-10-24T02:58:54.9195317Z 579 โ โ const written = yield* eventSink.write({ events: [nextEvent] });
2026-10-24T02:58:54.9195439Z 580 โ โ const received = yield* Fiber.join(reader);
2026-10-24T02:58:54.9195553Z 581 โ โ if (Option.isNone(received)) {
2026-10-24T02:58:54.9195749Z 582 โ โ return yield* Effect.die("The event stream ended before delivering the live event.");
2026-10-24T02:58:54.9195828Z 583 โ โ }
2026-10-24T02:58:54.9195984Z 584 โ โ assert.equal(received.value.sequence, written[0]?.sequence);
2026-10-24T02:58:54.9196176Z 585 โ โ assert.equal(received.value.event.id, nextEvent.id);
2026-10-24T02:58:54.9196329Z 586 โ โ afterSequence = received.value.sequence;
2026-10-24T02:58:54.9196456Z 587 โ โฐโโถ }
2026-10-24T02:58:54.9196514Z 588 โ }),
2026-10-24T02:58:54.9196567Z โฐโโโโ
2026-10-24T02:58:54.9196569Z
2026-10-24T02:58:54.9197021Z โ 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-24T02:58:54.9197189Z โญโ[apps/server/src/orchestration-v2/FoundationPersistence.test.ts:2327:9]
2026-10-24T02:58:54.9197265Z 2326 โ let settled = false;
2026-10-24T02:58:54.9197427Z 2327 โ โญโโถ while (!settled) {
2026-10-24T02:58:54.9197585Z 2328 โ โ settled = (yield* outbox.listByCommandId(commandId)).every(
2026-10-24T02:58:54.9197716Z 2329 โ โ (effect) => effect.status === "succeeded",
2026-10-24T02:58:54.9197797Z 2330 โ โ );
2026-10-24T02:58:54.9197918Z 2331 โ โ if (!settled) yield* Effect.yieldNow;
2026-10-24T02:58:54.9198054Z 2332 โ โฐโโถ }
2026-10-24T02:58:54.9198172Z 2333 โ }).pipe(Effect.provide(layerWorker), Effect.scoped);
2026-10-24T02:58:54.9198224Z โฐโโโโ
2026-10-24T02:58:54.9198226Z
2026-10-24T02:58:54.9198683Z โ 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-24T02:58:54.9198811Z โญโ[packages/effect-acp/src/protocol.test.ts:500:31]
2026-10-24T02:58:54.9198864Z 499 โ
2026-10-24T02:58:54.9198976Z 500 โ const response = yield* Schema.decodeUnknownEffect(
2026-10-24T02:58:54.9199092Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9199197Z 501 โ Schema.fromJsonString(JsonRpcErrorResponse),
2026-10-24T02:58:54.9199247Z โฐโโโโ
2026-10-24T02:58:54.9199249Z
2026-10-24T02:58:54.9199538Z โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.9199658Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
2026-10-24T02:58:54.9199715Z 217 โ
2026-10-24T02:58:54.9199876Z 218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
2026-10-24T02:58:54.9200016Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9200167Z ยท โฐโโ 'revokeActiveMcpThread' is declared here
2026-10-24T02:58:54.9200352Z 219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
2026-10-24T02:58:54.9200403Z โฐโโโโ
2026-10-24T02:58:54.9200504Z help: Consider removing this declaration.
2026-10-24T02:58:54.9200506Z
2026-10-24T02:58:54.9200808Z โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
2026-10-24T02:58:54.9200927Z โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
2026-10-24T02:58:54.9200980Z 220 โ
2026-10-24T02:58:54.9201160Z 221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
2026-10-24T02:58:54.9201289Z ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9201462Z ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
2026-10-24T02:58:54.9201620Z 222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
2026-10-24T02:58:54.9201671Z โฐโโโโ
2026-10-24T02:58:54.9201771Z help: Consider removing this declaration.
2026-10-24T02:58:54.9201773Z
2026-10-24T02:58:54.9201950Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9202084Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
2026-10-24T02:58:54.9202250Z 120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
2026-10-24T02:58:54.9202340Z 121 โ const dispatch = vi.fn((_: unknown) =>
2026-10-24T02:58:54.9202420Z ยท โฌ
2026-10-24T02:58:54.9202547Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9202647Z 122 โ (options.dispatchGate ?? Effect.void).pipe(
2026-10-24T02:58:54.9202698Z โฐโโโโ
2026-10-24T02:58:54.9202796Z help: Consider removing this parameter.
2026-10-24T02:58:54.9202798Z
2026-10-24T02:58:54.9202976Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9203109Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
2026-10-24T02:58:54.9203165Z 133 โ );
2026-10-24T02:58:54.9203267Z 134 โ const listLocalBranchNames = vi.fn((_: string) =>
2026-10-24T02:58:54.9203368Z ยท โฌ
2026-10-24T02:58:54.9203505Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9203571Z 135 โ Effect.succeed(
2026-10-24T02:58:54.9203620Z โฐโโโโ
2026-10-24T02:58:54.9203720Z help: Consider removing this parameter.
2026-10-24T02:58:54.9203723Z
2026-10-24T02:58:54.9203899Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9204030Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
2026-10-24T02:58:54.9204083Z 177 โ });
2026-10-24T02:58:54.9204181Z 178 โ const sendToThread = vi.fn((_: unknown) => {
2026-10-24T02:58:54.9204267Z ยท โฌ
2026-10-24T02:58:54.9204402Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9204500Z 179 โ switch (options.continuation ?? "queued") {
2026-10-24T02:58:54.9204551Z โฐโโโโ
2026-10-24T02:58:54.9204646Z help: Consider removing this parameter.
2026-10-24T02:58:54.9204649Z
2026-10-24T02:58:54.9204824Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9204953Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
2026-10-24T02:58:54.9205007Z 202 โ );
2026-10-24T02:58:54.9205104Z 203 โ const removeWorktree = vi.fn((_: unknown) =>
2026-10-24T02:58:54.9205192Z ยท โฌ
2026-10-24T02:58:54.9205322Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9205404Z 204 โ options.removeWorktreeFails
2026-10-24T02:58:54.9205512Z โฐโโโโ
2026-10-24T02:58:54.9205639Z help: Consider removing this parameter.
2026-10-24T02:58:54.9205641Z
2026-10-24T02:58:54.9205813Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9205945Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
2026-10-24T02:58:54.9206000Z 207 โ );
2026-10-24T02:58:54.9206100Z 208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
2026-10-24T02:58:54.9206190Z ยท โฌ
2026-10-24T02:58:54.9206324Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9206410Z 209 โ options.deleteLocalBranchFails
2026-10-24T02:58:54.9206463Z โฐโโโโ
2026-10-24T02:58:54.9206558Z help: Consider removing this parameter.
2026-10-24T02:58:54.9206562Z
2026-10-24T02:58:54.9206741Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9206874Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
2026-10-24T02:58:54.9206926Z 212 โ );
2026-10-24T02:58:54.9207038Z 213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
2026-10-24T02:58:54.9207133Z ยท โฌ
2026-10-24T02:58:54.9207271Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9207357Z 214 โ options.fetchWorktreeBaseFails
2026-10-24T02:58:54.9207408Z โฐโโโโ
2026-10-24T02:58:54.9207502Z help: Consider removing this parameter.
2026-10-24T02:58:54.9207505Z
2026-10-24T02:58:54.9207684Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9207818Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
2026-10-24T02:58:54.9207873Z 253 โ );
2026-10-24T02:58:54.9207960Z 254 โ const localStatus = vi.fn((_: unknown) =>
2026-10-24T02:58:54.9208046Z ยท โฌ
2026-10-24T02:58:54.9208175Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9208243Z 255 โ Effect.succeed({
2026-10-24T02:58:54.9208293Z โฐโโโโ
2026-10-24T02:58:54.9208391Z help: Consider removing this parameter.
2026-10-24T02:58:54.9208393Z
2026-10-24T02:58:54.9208567Z โ eslint(no-unused-vars): Parameter '_' is declared but never used.
2026-10-24T02:58:54.9208699Z โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
2026-10-24T02:58:54.9208802Z 263 โ );
2026-10-24T02:58:54.9208980Z 264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
2026-10-24T02:58:54.9209067Z ยท โฌ
2026-10-24T02:58:54.9209199Z ยท โฐโโ '_' is declared here
2026-10-24T02:58:54.9209341Z 265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
2026-10-24T02:58:54.9209390Z โฐโโโโ
2026-10-24T02:58:54.9209487Z help: Consider removing this parameter.
2026-10-24T02:58:54.9209490Z
2026-10-24T02:58:54.9209641Z โ eslint(no-new): Do not use 'new' for side effects.
2026-10-24T02:58:54.9209761Z โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
2026-10-24T02:58:54.9209881Z 167 โ // @ts-expect-error a declaration constructed directly
2026-10-24T02:58:54.9210003Z 168 โ new McpToolAccess.Declaration(unchecked);
2026-10-24T02:58:54.9210105Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9210229Z 169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
2026-10-24T02:58:54.9210280Z โฐโโโโ
2026-10-24T02:58:54.9210437Z help: Assign the result of 'new' to a variable or compare it to a reference.
2026-10-24T02:58:54.9210440Z
2026-10-24T02:58:54.9210895Z โ 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-24T02:58:54.9211040Z โญโ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
2026-10-24T02:58:54.9211164Z 132 โ const monitor = yield* HostPowerMonitor.HostPowerMonitor;
2026-10-24T02:58:54.9211311Z 133 โ โญโโถ for (
2026-10-24T02:58:54.9211413Z 134 โ โ let attempt = 0;
2026-10-24T02:58:54.9211580Z 135 โ โ attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
2026-10-24T02:58:54.9211674Z 136 โ โ attempt += 1
2026-10-24T02:58:54.9211756Z 137 โ โ ) {
2026-10-24T02:58:54.9211868Z 138 โ โ yield* Effect.yieldNow;
2026-10-24T02:58:54.9211999Z 139 โ โฐโโถ }
2026-10-24T02:58:54.9212119Z 140 โ expect((yield* monitor.snapshot).onBattery).toBe("true");
2026-10-24T02:58:54.9212171Z โฐโโโโ
2026-10-24T02:58:54.9212173Z
2026-10-24T02:58:54.9212335Z โ react(immutability): This value cannot be modified
2026-10-24T02:58:54.9212492Z โญโ[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
2026-10-24T02:58:54.9212584Z 53 โ function usePulseAnimation(pulse: boolean) {
2026-10-24T02:58:54.9212675Z 54 โ const pulseProgress = useSharedValue(0);
2026-10-24T02:58:54.9212754Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9212892Z ยท โฐโโ `pulseProgress` originates here
2026-10-24T02:58:54.9212942Z 55 โ
2026-10-24T02:58:54.9213008Z 56 โ useEffect(() => {
2026-10-24T02:58:54.9213070Z 57 โ if (pulse) {
2026-10-24T02:58:54.9213155Z 58 โ pulseProgress.value = withRepeat(
2026-10-24T02:58:54.9213230Z ยท โโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9213420Z ยท โฐโโ `pulseProgress` cannot be modified
2026-10-24T02:58:54.9213519Z 59 โ withTiming(1, {
2026-10-24T02:58:54.9213569Z โฐโโโโ
2026-10-24T02:58:54.9213828Z 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-24T02:58:54.9214133Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
2026-10-24T02:58:54.9214135Z
2026-10-24T02:58:54.9214388Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9214521Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
2026-10-24T02:58:54.9214620Z 66 โ const { id: attachmentId, fileUri } = attachment;
2026-10-24T02:58:54.9214684Z 67 โ useEffect(() => {
2026-10-24T02:58:54.9214758Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9214885Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9214947Z 68 โ setUri(null);
2026-10-24T02:58:54.9215015Z ยท โโโโฌโโ
2026-10-24T02:58:54.9215177Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9215240Z 69 โ setError(null);
2026-10-24T02:58:54.9215290Z โฐโโโโ
2026-10-24T02:58:54.9215870Z 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-24T02:58:54.9216194Z 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-24T02:58:54.9216199Z
2026-10-24T02:58:54.9216395Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9216528Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
2026-10-24T02:58:54.9216581Z 90 โ };
2026-10-24T02:58:54.9216658Z 91 โ }, [attachmentId, fileUri]);
2026-10-24T02:58:54.9216775Z ยท โโโโโโโฌโโโโโ โโโโฌโโโ
2026-10-24T02:58:54.9216953Z ยท โ โฐโโ Unnecessary dependency `fileUri`
2026-10-24T02:58:54.9217096Z ยท โฐโโ Unnecessary dependency `attachmentId`
2026-10-24T02:58:54.9217235Z 92 โ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
2026-10-24T02:58:54.9217289Z โฐโโโโ
2026-10-24T02:58:54.9217575Z 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-24T02:58:54.9217879Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9217881Z
2026-10-24T02:58:54.9218090Z โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
2026-10-24T02:58:54.9218226Z โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
2026-10-24T02:58:54.9218294Z 212 โ useEffect(() => {
2026-10-24T02:58:54.9218405Z 213 โ if (!isFocused && hasSource) props.onRequestClose();
2026-10-24T02:58:54.9218549Z ยท โโโฌโโ
2026-10-24T02:58:54.9218723Z ยท โฐโโ Missing dependency `props`
2026-10-24T02:58:54.9218828Z 214 โ }, [isFocused, hasSource, props.onRequestClose]);
2026-10-24T02:58:54.9218937Z ยท โโโโโโโโโโโฌโโโโโโโโโ
2026-10-24T02:58:54.9219157Z ยท โฐโโ Overly precise dependency `props.onRequestClose`, use `props` instead
2026-10-24T02:58:54.9219232Z 215 โ const { source } = props;
2026-10-24T02:58:54.9219284Z โฐโโโโ
2026-10-24T02:58:54.9219801Z 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-24T02:58:54.9220154Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9220159Z
2026-10-24T02:58:54.9220352Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9220479Z โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
2026-10-24T02:58:54.9220535Z 81 โ },
2026-10-24T02:58:54.9220599Z 82 โ [draftKey],
2026-10-24T02:58:54.9220668Z ยท โโโโโฌโโโ
2026-10-24T02:58:54.9220803Z ยท โฐโโ Unnecessary dependency `draftKey`
2026-10-24T02:58:54.9220857Z 83 โ );
2026-10-24T02:58:54.9220907Z โฐโโโโ
2026-10-24T02:58:54.9221195Z 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-24T02:58:54.9221501Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9221503Z
2026-10-24T02:58:54.9221753Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9221920Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:79:5]
2026-10-24T02:58:54.9221970Z 76 โ
2026-10-24T02:58:54.9222035Z 77 โ useEffect(() => {
2026-10-24T02:58:54.9222104Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9222229Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9222357Z 78 โ const { host, code } = parsePairingUrl(connectionPairingUrl);
2026-10-24T02:58:54.9222429Z 79 โ setHostInput(host);
2026-10-24T02:58:54.9222503Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9222666Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9222731Z 80 โ setCodeInput(code);
2026-10-24T02:58:54.9222781Z โฐโโโโ
2026-10-24T02:58:54.9223365Z 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-24T02:58:54.9223679Z 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-24T02:58:54.9223743Z
2026-10-24T02:58:54.9224029Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9224192Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:89:5]
2026-10-24T02:58:54.9224246Z 82 โ
2026-10-24T02:58:54.9224308Z 83 โ useEffect(() => {
2026-10-24T02:58:54.9224377Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9224501Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9224590Z 84 โ if (routePairingUrl.length === 0) {
2026-10-24T02:58:54.9224650Z 85 โ return;
2026-10-24T02:58:54.9224702Z 86 โ }
2026-10-24T02:58:54.9224752Z 87 โ
2026-10-24T02:58:54.9224867Z 88 โ const { host, code } = parsePairingUrl(routePairingUrl);
2026-10-24T02:58:54.9224941Z 89 โ setHostInput(host);
2026-10-24T02:58:54.9225019Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9225180Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9225246Z 90 โ setCodeInput(code);
2026-10-24T02:58:54.9225297Z โฐโโโโ
2026-10-24T02:58:54.9225875Z 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-24T02:58:54.9226190Z 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-24T02:58:54.9226195Z
2026-10-24T02:58:54.9226445Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9226612Z โญโ[apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx:95:7]
2026-10-24T02:58:54.9226664Z 92 โ
2026-10-24T02:58:54.9226727Z 93 โ useEffect(() => {
2026-10-24T02:58:54.9226794Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9226920Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9227002Z 94 โ if (pairingConnectionError) {
2026-10-24T02:58:54.9227073Z 95 โ setIsSubmitting(false);
2026-10-24T02:58:54.9227152Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9227319Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9227373Z 96 โ }
2026-10-24T02:58:54.9227428Z โฐโโโโ
2026-10-24T02:58:54.9228017Z 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-24T02:58:54.9228333Z 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-24T02:58:54.9228336Z
2026-10-24T02:58:54.9228585Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9228715Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
2026-10-24T02:58:54.9228768Z 57 โ
2026-10-24T02:58:54.9228884Z 58 โ useEffect(() => {
2026-10-24T02:58:54.9228982Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9229111Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9229205Z 59 โ const controller = new AbortController();
2026-10-24T02:58:54.9229278Z 60 โ setLoadState("pending");
2026-10-24T02:58:54.9229350Z ยท โโโโโโโฌโโโโโ
2026-10-24T02:58:54.9229510Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9229664Z 61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
2026-10-24T02:58:54.9229716Z โฐโโโโ
2026-10-24T02:58:54.9230330Z 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-24T02:58:54.9230643Z 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-24T02:58:54.9230646Z
2026-10-24T02:58:54.9230844Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9230974Z โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
2026-10-24T02:58:54.9231054Z 70 โ return () => controller.abort();
2026-10-24T02:58:54.9231148Z 71 โ }, [player, props.playRequested, attempt]);
2026-10-24T02:58:54.9231314Z ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
2026-10-24T02:58:54.9231538Z ยท โ โ โฐโโ Unnecessary dependency `attempt`
2026-10-24T02:58:54.9231734Z ยท โ โฐโโ Unnecessary dependency `props.playRequested`
2026-10-24T02:58:54.9231870Z ยท โฐโโ Unnecessary dependency `player_0`
2026-10-24T02:58:54.9231923Z 72 โ
2026-10-24T02:58:54.9231973Z โฐโโโโ
2026-10-24T02:58:54.9232256Z 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-24T02:58:54.9232557Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9232560Z
2026-10-24T02:58:54.9232749Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9232893Z โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
2026-10-24T02:58:54.9233065Z 53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
2026-10-24T02:58:54.9233234Z 54 โ โญโโถ children = cloneElement(child, {
2026-10-24T02:58:54.9233339Z 55 โ โ onTouchStart: (event) => {
2026-10-24T02:58:54.9233493Z 56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
2026-10-24T02:58:54.9233647Z 57 โ โ // finger moves out of the row and back during the same gesture.
2026-10-24T02:58:54.9233771Z 58 โ โ menuPress.current.isPreparing = false;
2026-10-24T02:58:54.9233939Z 59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
2026-10-24T02:58:54.9234051Z 60 โ โ pendingPress.current = null;
2026-10-24T02:58:54.9234171Z 61 โ โ child.props.onTouchStart?.(event);
2026-10-24T02:58:54.9234245Z 62 โ โ },
2026-10-24T02:58:54.9235819Z 63 โ โ onPress: (event) => {
2026-10-24T02:58:54.9235996Z 64 โ โ // Accessibility clicks have no touch identifier and must not inherit
2026-10-24T02:58:54.9236132Z 65 โ โ // cancellation from a previous physical gesture.
2026-10-24T02:58:54.9236295Z 66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
2026-10-24T02:58:54.9236487Z 67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
2026-10-24T02:58:54.9236575Z 68 โ โ return;
2026-10-24T02:58:54.9236651Z 69 โ โ }
2026-10-24T02:58:54.9236786Z 70 โ โ if (isTouch && menuPress.current.isPreparing) {
2026-10-24T02:58:54.9236950Z 71 โ โ // A release can arrive between native menu preparation and display.
2026-10-24T02:58:54.9237110Z 72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
2026-10-24T02:58:54.9237209Z 73 โ โ event.persist();
2026-10-24T02:58:54.9237363Z 74 โ โ pendingPress.current = () => child.props.onPress?.(event);
2026-10-24T02:58:54.9237447Z 75 โ โ return;
2026-10-24T02:58:54.9237523Z 76 โ โ }
2026-10-24T02:58:54.9237639Z 77 โ โ child.props.onPress?.(event);
2026-10-24T02:58:54.9237715Z 78 โ โ },
2026-10-24T02:58:54.9237843Z 79 โ โโโถ });
2026-10-24T02:58:54.9238072Z ยท โฐโโโโ Passing a ref to a function may read its value during render
2026-10-24T02:58:54.9238173Z 80 โ menuProps.onMenuInteractionStart = () => {
2026-10-24T02:58:54.9238222Z โฐโโโโ
2026-10-24T02:58:54.9238681Z 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-24T02:58:54.9239038Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9239073Z
2026-10-24T02:58:54.9239281Z โ react(no-unstable-nested-components): Do not define components during render.
2026-10-24T02:58:54.9239385Z โญโ[apps/mobile/src/Stack.tsx:1074:21]
2026-10-24T02:58:54.9239448Z 1073 โ <Navigator
2026-10-24T02:58:54.9239578Z 1074 โ screenLayout={(props) => <GuardedScreenLayout {...props} />}
2026-10-24T02:58:54.9239713Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9239782Z 1075 โ screenListeners={{
2026-10-24T02:58:54.9239833Z โฐโโโโ
2026-10-24T02:58:54.9240232Z 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-24T02:58:54.9240238Z
2026-10-24T02:58:54.9240427Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T02:58:54.9240571Z โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:267:25]
2026-10-24T02:58:54.9240677Z 266 โ {record.elements?.map((element, index) => (
2026-10-24T02:58:54.9240837Z 267 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
2026-10-24T02:58:54.9240987Z ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2026-10-24T02:58:54.9241062Z 268 โ <ContextField
2026-10-24T02:58:54.9241112Z โฐโโโโ
2026-10-24T02:58:54.9241256Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T02:58:54.9241258Z
2026-10-24T02:58:54.9241515Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9241661Z โญโ[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
2026-10-24T02:58:54.9241719Z 61 โ }, []);
2026-10-24T02:58:54.9241782Z 62 โ useEffect(() => {
2026-10-24T02:58:54.9241852Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9241977Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9242125Z 63 โ if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
2026-10-24T02:58:54.9242242Z ยท โโโโโโโโฌโโโโโโ
2026-10-24T02:58:54.9242448Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9242529Z 64 โ }, [playbackUrl, resolvedUrl]);
2026-10-24T02:58:54.9242579Z โฐโโโโ
2026-10-24T02:58:54.9243165Z 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-24T02:58:54.9243478Z 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-24T02:58:54.9243481Z
2026-10-24T02:58:54.9243729Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9243907Z โญโ[apps/mobile/src/components/ProjectFavicon.tsx:159:5]
2026-10-24T02:58:54.9244129Z 154 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
2026-10-24T02:58:54.9244197Z 155 โ useLayoutEffect(() => {
2026-10-24T02:58:54.9244273Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9244402Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9244488Z 156 โ if (faviconRequest === null) return;
2026-10-24T02:58:54.9244538Z 157 โ
2026-10-24T02:58:54.9244668Z 158 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
2026-10-24T02:58:54.9244761Z 159 โ setActiveFaviconRequest(faviconRequest);
2026-10-24T02:58:54.9244850Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9245015Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9245088Z 160 โ return endRequest;
2026-10-24T02:58:54.9245141Z โฐโโโโ
2026-10-24T02:58:54.9245723Z 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-24T02:58:54.9246038Z 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-24T02:58:54.9246040Z
2026-10-24T02:58:54.9246229Z โ react(no-array-index-key): Usage of Array index in keys is not allowed
2026-10-24T02:58:54.9246383Z โญโ[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
2026-10-24T02:58:54.9246451Z 71 โ <Pressable
2026-10-24T02:58:54.9246516Z 72 โ key={index}
2026-10-24T02:58:54.9246597Z ยท โโโโโโโโโโโ
2026-10-24T02:58:54.9246680Z 73 โ accessibilityRole="button"
2026-10-24T02:58:54.9246730Z โฐโโโโ
2026-10-24T02:58:54.9246872Z help: Use a unique data-dependent key to avoid unnecessary rerenders
2026-10-24T02:58:54.9246875Z
2026-10-24T02:58:54.9247119Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9247270Z โญโ[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
2026-10-24T02:58:54.9247434Z 112 โ const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
2026-10-24T02:58:54.9247499Z 113 โ useEffect(() => {
2026-10-24T02:58:54.9247574Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9247701Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9247861Z 114 โ if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
2026-10-24T02:58:54.9247923Z 115 โ return;
2026-10-24T02:58:54.9247976Z 116 โ }
2026-10-24T02:58:54.9248092Z 117 โ setEntry({ key: input.targetKey, location: candidate });
2026-10-24T02:58:54.9248161Z ยท โโโโโฌโโโ
2026-10-24T02:58:54.9248325Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9248443Z 118 โ }, [candidate, entry.key, entry.location, input.targetKey]);
2026-10-24T02:58:54.9248494Z โฐโโโโ
2026-10-24T02:58:54.9249125Z 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-24T02:58:54.9249465Z 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-24T02:58:54.9249468Z
2026-10-24T02:58:54.9249716Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9249904Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
2026-10-24T02:58:54.9249956Z 638 โ
2026-10-24T02:58:54.9250019Z 639 โ useEffect(() => {
2026-10-24T02:58:54.9250086Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9250215Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9250324Z 640 โ if (pendingLaunchEntry.key === launchTargetKey) {
2026-10-24T02:58:54.9250384Z 641 โ return;
2026-10-24T02:58:54.9250437Z 642 โ }
2026-10-24T02:58:54.9250508Z 643 โ setPendingLaunchEntry({
2026-10-24T02:58:54.9250593Z ยท โโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9250761Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9250830Z 644 โ key: launchTargetKey,
2026-10-24T02:58:54.9250879Z โฐโโโโ
2026-10-24T02:58:54.9251466Z 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-24T02:58:54.9251780Z 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-24T02:58:54.9251783Z
2026-10-24T02:58:54.9252027Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9252191Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
2026-10-24T02:58:54.9252241Z 648 โ
2026-10-24T02:58:54.9252306Z 649 โ useEffect(() => {
2026-10-24T02:58:54.9252373Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9252501Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9252615Z 650 โ if (initialAttachGridEntry.key === launchTargetKey) {
2026-10-24T02:58:54.9252676Z 651 โ return;
2026-10-24T02:58:54.9252730Z 652 โ }
2026-10-24T02:58:54.9252807Z 653 โ setInitialAttachGridEntry({
2026-10-24T02:58:54.9252898Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
2026-10-24T02:58:54.9253064Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9253134Z 654 โ key: launchTargetKey,
2026-10-24T02:58:54.9253184Z โฐโโโโ
2026-10-24T02:58:54.9253762Z 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-24T02:58:54.9254122Z 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-24T02:58:54.9254155Z
2026-10-24T02:58:54.9254400Z โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
2026-10-24T02:58:54.9254563Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
2026-10-24T02:58:54.9254616Z 743 โ
2026-10-24T02:58:54.9254678Z 744 โ useEffect(() => {
2026-10-24T02:58:54.9254746Z ยท โโโโโฌโโโโ
2026-10-24T02:58:54.9254870Z ยท โฐโโ This is the containing effect
2026-10-24T02:58:54.9254970Z 745 โ if (!routeEnvironmentId || !routeThreadId) {
2026-10-24T02:58:54.9255036Z 746 โ setLastGridSize({
2026-10-24T02:58:54.9255120Z ยท โโโโโโโโฌโโโโโโโ
2026-10-24T02:58:54.9255286Z ยท โฐโโ Avoid calling setState() directly within an effect
2026-10-24T02:58:54.9255366Z 747 โ cols: DEFAULT_TERMINAL_COLS,
2026-10-24T02:58:54.9255415Z โฐโโโโ
2026-10-24T02:58:54.9256000Z 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-24T02:58:54.9256313Z 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-24T02:58:54.9256315Z
2026-10-24T02:58:54.9256515Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9256684Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
2026-10-24T02:58:54.9256738Z 537 โ });
2026-10-24T02:58:54.9256862Z 538 โ }, [terminal.buffer, terminal.buffer.length, terminalKey]);
2026-10-24T02:58:54.9256968Z ยท โโโโโโโโโโโโฌโโโโโโโโโโ
2026-10-24T02:58:54.9257209Z ยท โฐโโ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
2026-10-24T02:58:54.9257368Z 539 โ const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
2026-10-24T02:58:54.9257418Z โฐโโโโ
2026-10-24T02:58:54.9257753Z 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-24T02:58:54.9258086Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9258089Z
2026-10-24T02:58:54.9258287Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9258449Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
2026-10-24T02:58:54.9258545Z 708 โ sentInitialInputKeyRef.current = null;
2026-10-24T02:58:54.9258610Z 709 โ }, [terminalKey]);
2026-10-24T02:58:54.9258685Z ยท โโโโโโฌโโโโโ
2026-10-24T02:58:54.9258824Z ยท โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T02:58:54.9258875Z 710 โ
2026-10-24T02:58:54.9258925Z โฐโโโโ
2026-10-24T02:58:54.9259215Z 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-24T02:58:54.9259659Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9259661Z
2026-10-24T02:58:54.9259888Z โ react(exhaustive-effect-dependencies): Found extra effect dependencies
2026-10-24T02:58:54.9260056Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
2026-10-24T02:58:54.9260111Z 799 โ };
2026-10-24T02:58:54.9260284Z 800 โ }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
2026-10-24T02:58:54.9260461Z ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโฌโโโโโ
2026-10-24T02:58:54.9260693Z ยท โ โฐโโ Unnecessary dependency `terminalKey`
2026-10-24T02:58:54.9260898Z ยท โฐโโ Unnecessary dependency `terminal.lifecycleVersion`
2026-10-24T02:58:54.9260949Z 801 โ
2026-10-24T02:58:54.9260998Z โฐโโโโ
2026-10-24T02:58:54.9261280Z 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-24T02:58:54.9261584Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
2026-10-24T02:58:54.9261586Z
2026-10-24T02:58:54.9261733Z โ react(refs): Cannot access refs during render
2026-10-24T02:58:54.9261897Z โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
2026-10-24T02:58:54.9261950Z 792 โ }
2026-10-24T02:58:54.9262056Z 793 โ const pasteSession = pasteSessionRef.current;
2026-10-24T02:58:54.9262166Z ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
2026-10-24T02:58:54.9262325Z ยท โฐโโ Cannot access ref value during render
2026-10-24T02:58:54.9262375Z 794 โ
2026-10-24T02:58:54.9262425Z โฐโโโโ
2026-10-24T02:58:54.9262958Z 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-24T02:58:54.9263378Z note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
2026-10-24T02:58:54.9263381Z
2026-10-24T02:58:54.9263462Z Found 0 errors and 362 warnings in 5407 files (5.2s, 8 threads)
2026-10-24T02:58:54.9689199Z Post job cleanup.
2026-10-24T02:58:55.0291556Z Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
2026-10-24T02:58:55.0359461Z Post job cleanup.
2026-10-24T02:58:55.0370895Z ##[start-action display=Cache full pnpm store;id=__f6ac6304-82d7-4d9a-8e03-922c651584ec.__actions_cache]
2026-10-24T02:58:55.0975793Z Post job cleanup.
2026-10-24T02:58:55.1621187Z Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-3cb0b4d7cff93dc8fe33f2ea73cac71ca25a36270fcb648b9b4a9320151012ef, not saving cache.
2026-10-24T02:58:55.1653262Z ##[end-action id=__f6ac6304-82d7-4d9a-8e03-922c651584ec.__actions_cache;outcome=success;conclusion=success;duration_ms=128]
2026-10-24T02:58:55.1654812Z ##[start-action display=Cache Vite+;id=__f6ac6304-82d7-4d9a-8e03-922c651584ec.vp_cache]
2026-10-24T02:58:55.1673873Z Post job cleanup.
2026-10-24T02:58:55.2284423Z 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-24T02:58:55.2317445Z ##[end-action id=__f6ac6304-82d7-4d9a-8e03-922c651584ec.vp_cache;outcome=success;conclusion=success;duration_ms=66]
2026-10-24T02:58:55.2360933Z Post job cleanup.
2026-10-24T02:58:55.2751114Z [command]/usr/local/bin/git version
2026-10-24T02:58:55.2777659Z git version 2.55.0
2026-10-24T02:58:55.2794135Z Temporarily overriding HOME='/home/runner/_work/_temp/2f9ebf18-3e72-445f-be97-a50f417dbf4f' before making global git config changes
2026-10-24T02:58:55.2794499Z Adding repository directory to the temporary git global config as a safe directory
2026-10-24T02:58:55.2796917Z [command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
2026-10-24T02:58:55.2818223Z Removing SSH command configuration
2026-10-24T02:58:55.2821380Z [command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
2026-10-24T02:58:55.2846585Z [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-24T02:58:55.2968649Z fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
2026-10-24T02:58:55.2988498Z ##[warning]The process '/usr/local/bin/git' failed with exit code 128
2026-10-24T02:58:55.3028506Z A job completed hook has been configured by the self-hosted runner administrator
2026-10-24T02:58:55.3044595Z ##[group]Run '/job_completed.sh'
2026-10-24T02:58:55.3051532Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
2026-10-24T02:58:55.3051697Z env:
2026-10-24T02:58:55.3051810Z BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 5307
2026-10-24T02:58:55.3051964Z BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 407
2026-10-24T02:58:55.3052104Z BLACKSMITH_CHECK_RUN_ID: 120760135878
2026-10-24T02:58:55.3052240Z BLACKSMITH_JOB_DISPLAY_NAME: Lint
2026-10-24T02:58:55.3052378Z GITHUB_ACTIONS_CACHE_MODE: write
2026-10-24T02:58:55.3052504Z ##[endgroup]
2026-10-24T02:58:55.3121466Z Docker container cache not activated, skipping hash computation.
2026-10-24T02:58:55.3364893Z No active SSH sessions detected. Proceeding with shutdown immediately.
2026-10-24T02:58:55.3404647Z Cleaning up orphan processes