GitHub check
256 KB of 604 KB loaded Download the full log (604 KB)
348 KB of earlier output not loaded
-10-24T20:31:55.8645106Z 1054 โ const floatingControlCoverage = useSharedValue(
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ `floatingControlCoverage` originates here
1055 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
1056 โ );
1057 โ useEffect(() => {
1058 โ floatingControlCoverage.value = withTiming(
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ `floatingControlCoverage` cannot be modified
1059 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:1076:7]
1066 โ const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
1067 โ const combinedContentInsetEndAdjustment = useSharedValue(
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
ยท โฐโโ `combinedContentInsetEndAdjustment` originates here
1068 โ Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
1069 โ );
1070 โ useAnimatedReaction(
1071 โ () =>
1072 โ contentInsetEndAdjustment.value +
1073 โ floatingControlCoverage.value +
1074 โ (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
1075 โ (value) => {
1076 โ combinedContentInsetEndAdjustment.value = value;
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
ยท โฐโโ `combinedContentInsetEndAdjustment` cannot be modified
1077 โ },
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:40:5]
37 โ const [initialized, setInitialized] = useState(false);
38 โ useLayoutEffect(() => {
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ This is the containing effect
39 โ reset();
40 โ setInitialized(true);
ยท โโโโโโโโฌโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
41 โ }, [reset]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftRouteScreen.tsx:93:5]
88 โ
89 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
90 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
91 โ const branchName = initialProjectRef.branch;
92 โ let active = true;
93 โ setPendingCheckouts((count) => count + 1);
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
94 โ // Serialize replacements: ignoring a stale result cannot undo its Git mutation.
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:111:5]
107 โ );
108 โ const separationProgress = useSharedValue(props.showScrollToEnd ? 1 : 0);
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ `separationProgress` originates here
109 โ
110 โ useEffect(() => {
111 โ separationProgress.value = withTiming(props.showScrollToEnd ? 1 : 0, CONTROL_TIMING);
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ `separationProgress` cannot be modified
112 โ }, [props.showScrollToEnd, separationProgress]);
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
128 โ // and repeatedly retargets the animation as it grows.
129 โ const capsuleWidth = useSharedValue<number | null>(null);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `capsuleWidth` originates here
130 โ const measuredWidthRef = useRef<number | null>(null);
131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
132 โ const width = event.nativeEvent.layout.width;
133 โ if (width === measuredWidthRef.current) {
134 โ return;
135 โ }
136 โ const first = measuredWidthRef.current === null;
137 โ measuredWidthRef.current = width;
138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `capsuleWidth` cannot be modified
139 โ };
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
128 โ // and repeatedly retargets the animation as it grows.
129 โ const capsuleWidth = useSharedValue<number | null>(null);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `capsuleWidth` originates here
130 โ const measuredWidthRef = useRef<number | null>(null);
131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
132 โ const width = event.nativeEvent.layout.width;
133 โ if (width === measuredWidthRef.current) {
134 โ return;
135 โ }
136 โ const first = measuredWidthRef.current === null;
137 โ measuredWidthRef.current = width;
138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
139 โ };
140 โ const hasStatus = props.status !== null;
141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
142 โ useEffect(() => {
143 โ if (!hasStatus) {
144 โ measuredWidthRef.current = null;
145 โ capsuleWidth.value = null;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `capsuleWidth` cannot be modified
146 โ }
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): Cannot modify local variables after render completes
โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:145:7]
141 โ const hasCapsule = hasStatus || hasQueue || hasAgents || hasPreview;
142 โ useEffect(() => {
ยท โโโโฌโโโ
ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
143 โ if (!hasStatus) {
144 โ measuredWidthRef.current = null;
145 โ capsuleWidth.value = null;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ This modifies `capsuleWidth`
146 โ }
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): Cannot modify local variables after render completes
โญโ[apps/mobile/src/features/threads/floating-working-control.tsx:138:5]
130 โ const measuredWidthRef = useRef<number | null>(null);
131 โ const handleLabelLayout = (event: LayoutChangeEvent) => {
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ This function may (indirectly) reassign or modify `capsuleWidth` after render
132 โ const width = event.nativeEvent.layout.width;
133 โ if (width === measuredWidthRef.current) {
134 โ return;
135 โ }
136 โ const first = measuredWidthRef.current === null;
137 โ measuredWidthRef.current = width;
138 โ capsuleWidth.value = first ? width : withTiming(width, CONTROL_TIMING);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ This modifies `capsuleWidth`
139 โ };
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/Orchestrator.ts:12395:7]
12394 โ
12395 โ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ 'layerUnavailable' is declared here
12396 โ OrchestratorV2,
โฐโโโโ
help: Consider removing this declaration.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
259 โ .join("|");
260 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
261 โ stop();
ยท โโโฌโ
ยท โฐโโ Avoid calling setState() directly within an effect
262 โ }, [orderVersion]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:261:5]
260 โ useEffect(() => {
261 โ stop();
ยท โโโฌโ
ยท โฐโโ Missing dependency `stop`
262 โ }, [orderVersion]);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Unnecessary dependency `orderVersion`
263 โ useEffect(
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:96:9]
95 โ const latest = useRef(props);
96 โ latest.current = props;
ยท โโโโฌโโโโโโโฌโโโ
ยท โ โฐโโ Cannot update ref value during render
ยท โฐโโ This value is a ref
97 โ const gesture = useMemo(
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:104:18]
103 โ .runOnJS(true)
104 โ .onStart(() => latest.current.onStart())
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:105:19]
104 โ .onStart(() => latest.current.onStart())
105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
106 โ .onEnd((event) => latest.current.onMove(event.translationY))
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:106:16]
105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
106 โ .onEnd((event) => latest.current.onMove(event.translationY))
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:107:21]
106 โ .onEnd((event) => latest.current.onMove(event.translationY))
107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
ยท โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
108 โ [props.disabled],
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:249:9]
248 โ const latest = useRef({ rows, planners, moveThread });
249 โ latest.current = { rows, planners, moveThread };
ยท โโโโฌโโโโโโโฌโโโ
ยท โ โฐโโ Cannot update ref value during render
ยท โฐโโ This value is a ref
250 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:247:22]
246 โ const [preview, setPreview] = useState<Drag | null>(null);
247 โ const translateY = useRef(new Animated.Value(0)).current;
ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
ยท โฐโโ Cannot access ref value during render
248 โ const latest = useRef({ rows, planners, moveThread });
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(purity): Cannot call impure function during render
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:324:16]
323 โ update(0);
324 โ let last = performance.now();
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Cannot call impure function
325 โ const tick = () => {
โฐโโโโ
help: `performance.now` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
โ react(capitalized-calls): Capitalized function called without JSX
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:99:15]
98 โ () =>
99 โ Gesture.Pan()
ยท โโฌโ
ยท โฐโโ `Pan` may be a component
100 โ .enabled(!props.disabled)
โฐโโโโ
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
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
โ react(memo-dependencies): Found missing memoization dependencies
โญโ[apps/mobile/src/features/threads/ThreadArrangementSheet.tsx:108:5]
103 โ .runOnJS(true)
104 โ .onStart(() => latest.current.onStart())
ยท โโโโฌโโ
ยท โฐโโ 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
105 โ .onUpdate((event) => latest.current.onMove(event.translationY))
106 โ .onEnd((event) => latest.current.onMove(event.translationY))
107 โ .onFinalize((_, success) => latest.current.onEnd(!success)),
108 โ [props.disabled],
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
109 โ );
โฐโโโโ
help: Missing dependencies can cause a value to update less often than it should, resulting in stale UI
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/hooks/useThreadActions.ts:821:56]
820 โ const resolved = resolveThreadTarget(target);
821 โ if (resolved && !canSnooze(resolved.thread, { now: new Date().toISOString() })) {
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
822 โ return AsyncResult.failure(
โฐโโโโ
help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/hooks/useThreadActions.ts:709:46]
708 โ const wokeAt = resolved
709 โ ? threadWokeAt(resolved.thread, { now: new Date().toISOString() })
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
710 โ : null;
โฐโโโโ
help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
โ eslint(no-unused-vars): Function 'describeSchedule' is declared but never used.
โญโ[apps/server/src/scheduledTasks/Schedule.ts:79:10]
78 โ
79 โ function describeSchedule(schedule: ScheduledTaskSchedule): string {
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ 'describeSchedule' is declared here
80 โ if (schedule.type === "webhook") return "On webhook";
โฐโโโโ
help: Consider removing this declaration.
โ 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.
โญโ[apps/server/src/scheduledTasks/ScheduledTaskService.webhook.test.ts:521:13]
520 โ })).delivery;
521 โ โญโโถ while (delivery.outcome === "accepted") {
522 โ โ yield* Effect.yieldNow;
523 โ โ delivery = (yield* service.getWebhookDelivery({
524 โ โ id: task.id,
525 โ โ deliveryId: deliveryId!,
526 โ โ })).delivery;
527 โ โฐโโถ }
528 โ assert.equal(delivery.outcome, "dispatch_failed");
โฐโโโโ
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:361:7]
355 โ }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
356 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
357 โ if (!isReturningToProjectPicker) {
358 โ return;
359 โ }
360 โ if (requestedInitialProjectAvailable) {
361 โ setIsReturningToProjectPicker(false);
ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
362 โ return;
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:504:9]
447 โ
448 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
449 โ if (props.pendingTaskId || props.draftId) {
450 โ return;
451 โ }
452 โ if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
453 โ lastInitialProjectRefRef.current = props.initialProjectRef;
454 โ appliedInitialProjectKeyRef.current = null;
455 โ }
456 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
457 โ const initialProjectId = props.initialProjectRef?.projectId;
458 โ if (initialEnvironmentId && initialProjectId) {
459 โ const directProject =
460 โ projects.find(
461 โ (project) =>
462 โ project.environmentId === initialEnvironmentId && project.id === initialProjectId,
463 โ ) ?? null;
464 โ
465 โ if (directProject) {
466 โ // Apply the route's project once. Re-applying on every change would
467 โ // instantly revert environment/project switches made in the picker.
468 โ const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
469 โ if (appliedInitialProjectKeyRef.current === directProjectKey) {
470 โ return;
471 โ }
472 โ if (props.initialProjectRef?.branch) {
473 โ if (
474 โ selectedProject?.environmentId !== directProject.environmentId ||
475 โ selectedProject.id !== directProject.id
476 โ ) {
477 โ setProject(directProject);
478 โ return;
479 โ }
480 โ if (!flow.draftKey) return;
481 โ // The route completes checkout before mounting this composer. Local
482 โ // mode reuses an existing worktree; worktree mode would create another.
483 โ updateComposerDraftSettings(flow.draftKey, {
484 โ workspaceSelection: {
485 โ mode: "local",
486 โ branch: props.initialProjectRef.branch,
487 โ worktreePath: props.initialProjectRef.worktreePath ?? null,
488 โ startFromOrigin: false,
489 โ },
490 โ });
491 โ }
492 โ appliedInitialProjectKeyRef.current = directProjectKey;
493 โ if (
494 โ selectedProject?.environmentId === directProject.environmentId &&
495 โ selectedProject.id === directProject.id
496 โ ) {
497 โ return;
498 โ }
499 โ setProject(directProject);
500 โ return;
501 โ }
502 โ
503 โ if (projects.length > 0) {
504 โ setIsReturningToProjectPicker(true);
ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
505 โ }
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:604:5]
545 โ
546 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
547 โ const shareId = props.incomingShareId;
548 โ const draftKey = flow.draftKey;
549 โ const destinationProject = selectedProject;
550 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
551 โ const initialProjectId = props.initialProjectRef?.projectId;
552 โ const selectedProjectMatchesRoute =
553 โ !initialEnvironmentId ||
554 โ !initialProjectId ||
555 โ (destinationProject?.environmentId === initialEnvironmentId &&
556 โ destinationProject.id === initialProjectId);
557 โ if (
558 โ !shareId ||
559 โ !draftKey ||
560 โ !destinationProject ||
561 โ !selectedProjectMatchesRoute ||
562 โ cancelledIncomingShareId === shareId
563 โ ) {
564 โ return;
565 โ }
566 โ const importKey = `${shareId}:${draftKey}`;
567 โ if (
568 โ startedShareImportKeyRef.current === importKey ||
569 โ cancellingShareImportKeyRef.current === importKey
570 โ ) {
571 โ return;
572 โ }
573 โ
574 โ if (!incomingShare) {
575 โ if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
576 โ alertedUnavailableIncomingShareIdRef.current = shareId;
577 โ Dialog.alert(
578 โ "Shared content unavailable",
579 โ "The shared content is no longer in the inbox. You can continue editing this task draft.",
580 โ );
581 โ }
582 โ return;
583 โ }
584 โ
585 โ if (
586 โ incomingShare.attachments.some((attachment) => attachment.type === "file") &&
587 โ selectedEnvironmentServerConfig === null
588 โ ) {
589 โ return;
590 โ }
591 โ
592 โ if (alertedUnavailableIncomingShareIdRef.current === shareId) {
593 โ alertedUnavailableIncomingShareIdRef.current = null;
594 โ }
595 โ startedShareImportKeyRef.current = importKey;
596 โ const draftBackup =
597 โ shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
598 โ shareImportDraftBackupRef.current.set(importKey, draftBackup);
599 โ const importToken = Symbol(importKey);
600 โ let didReserveShare = false;
601 โ let didConsumeShare = false;
602 โ let needsDraftRestore = false;
603 โ activeShareImportTokenRef.current = importToken;
604 โ setImportingShareKey(importKey);
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
605 โ void (async () => {
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:524:5]
523 โ props.initialProjectRef,
524 โ props.incomingShareId,
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `props.incomingShareId`
525 โ props.pendingTaskId,
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:543:5]
542 โ loadedBranchesProjectKeyRef.current = projectKey;
543 โ flow.loadBranches();
ยท โโโฌโ
ยท โฐโโ Missing dependency `flow`
544 โ }, [flow.loadBranches, selectedProject]);
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Overly precise dependency `flow.loadBranches`, use `flow` instead
545 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:766:5]
765 โ flow.draftKey,
766 โ hasImportedIncomingShare,
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `hasImportedIncomingShare`
767 โ incomingShare,
768 โ isIncomingShareInboxLoading,
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `isIncomingShareInboxLoading`
769 โ isIncomingShareUnavailable,
770 โ props.incomingShareId,
771 โ props.initialProjectRef?.environmentId,
772 โ props.initialProjectRef?.projectId,
773 โ releaseShareReservation,
774 โ reserveShare,
775 โ selectedEnvironmentServerConfig,
776 โ selectedProject,
777 โ shareImportAttempt,
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Unnecessary dependency `shareImportAttempt`
778 โ ]);
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ 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.
โญโ[apps/server/src/assets/AssetAccess.test.ts:975:35]
974 โ // Every client and server release spells the resource this way on the wire.
975 โ const { resource } = yield* Schema.decodeUnknownEffect(AssetCreateUrlInput)({
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
976 โ resource: { _tag: "github-media", cwd: "/repo", url },
โฐโโโโ
โ t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
โญโ[apps/server/src/assets/AssetAccess.test.ts:1012:32]
1011 โ expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
1012 โ const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
ยท โโโโโโโโโโโโโโโโโโโ
1013 โ expect(encoded).not.toContain(url);
โฐโโโโ
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/components/chat/useThreadLifecycle.tsx:178:58]
177 โ if (snoozeClockState.shell !== activeThreadShell) {
178 โ setSnoozeClockState({ shell: activeThreadShell, now: new Date().toISOString() });
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
179 โ }
โฐโโโโ
help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
โ eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/EffectWorker.ts:914:7]
913 โ
914 โ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
ยท โโโโโโฌโโโโโ
ยท โฐโโ 'layerDaemon' is declared here
915 โ runDaemon.pipe(Effect.forkScoped),
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:555:70]
554 โ assert.deepStrictEqual(
555 โ (yield* Ref.get(fixture.syncCommands)).map(({ commandId: _, ...rest }) => rest),
ยท โฌ
ยท โฐโโ '_' is declared here
556 โ [
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/orchestration-v2/PullRequestSyncReactor.test.ts:1155:70]
1154 โ assert.deepStrictEqual(
1155 โ (yield* Ref.get(fixture.linkCommands)).map(({ commandId: _, ...rest }) => rest),
ยท โฌ
ยท โฐโโ '_' is declared here
1156 โ [
โฐโโโโ
help: Consider removing this parameter.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/state/thread-order.ts:29:7]
28 โ getPendingThreadOrder();
29 โ }, [nowMinute, snoozeWakeTick]);
ยท โโโโโฌโโโโ โโโโโโโโฌโโโโโโ
ยท โ โฐโโ Unnecessary dependency `snoozeWakeTick`
ยท โฐโโ Unnecessary dependency `nowMinute`
30 โ return pending;
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[apps/mobile/src/state/use-model-option-memory.ts:21:7]
20 โ [instanceId]: {
21 โ ...(state[instanceId] ?? {}),
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
22 โ [model]: options,
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:57:5]
55 โ
56 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
57 โ setDecodedSize(null);
ยท โโโโโโโโฌโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
58 โ }, [props.sourceKey]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:61:5]
59 โ
60 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
61 โ setFailedUri(null);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
62 โ }, [props.uri]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ eslint(no-unused-vars): Identifier 'ActivityIndicator' is imported but never used.
โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:7:10]
6 โ import { parse, SvgAst, type JsxAST } from "react-native-svg";
7 โ import { ActivityIndicator, Pressable, StyleSheet, View, type ViewStyle } from "react-native";
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ 'ActivityIndicator' is imported here
8 โ
โฐโโโโ
help: Consider removing this import.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:58:7]
57 โ setDecodedSize(null);
58 โ }, [props.sourceKey]);
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ Unnecessary dependency `props.sourceKey`
59 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/threads/ThreadMarkdownImage.tsx:62:7]
61 โ setFailedUri(null);
62 โ }, [props.uri]);
ยท โโโโโฌโโโโ
ยท โฐโโ Unnecessary dependency `props.uri`
63 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ eslint(no-unused-vars): Variable 'legacyCredentials' is declared but never used. Unused variables should start with a '_'.
โญโ[packages/provider-cursor/src/server/credentialStore.test.ts:15:7]
14 โ
15 โ const legacyCredentials = {
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ 'legacyCredentials' is declared here
16 โ version: 1 as const,
โฐโโโโ
help: Consider removing this declaration.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/files/FileTreeBrowser.tsx:155:5]
150 โ
151 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
152 โ if (!controlledSelectedPath) {
153 โ return;
154 โ }
155 โ setExpandedPaths((current) => {
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
156 โ const ancestors = ancestorPaths(controlledSelectedPath);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ unicorn(prefer-add-event-listener): Prefer `addEventListener()` over their `on`-function counterparts.
โญโ[apps/web/src/components/device/deviceHubApi.test.ts:12:14]
11 โ addEventListener(_type: string, listener: (event: { data: string }) => void) {
12 โ this.onmessage = listener;
ยท โโโโโโโโโ
13 โ }
โฐโโโโ
help: `addEventListener()` can register multiple handlers and accepts options such as `{ once: true }`; assigning to `on<event>` replaces any previously registered handler.
โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
โญโ[apps/web/src/components/device/deviceHubApi.test.ts:16:9]
15 โ constructor() {
16 โ source = this;
ยท โโโโโโ
17 โ }
โฐโโโโ
help: Assigning a variable to this instead of properly using arrow lambdas may be a symptom of pre-ES2015 practices or not managing scope well.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/state/use-thread-outbox-drain.ts:1321:5]
1320 โ queuedMessagesByThreadKey,
1321 โ retryTick,
ยท โโโโโฌโโโโ
ยท โฐโโ Unnecessary dependency `retryTick`
1322 โ restoreQueuedMessage,
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/components/CustomSnoozeDialog.tsx:140:58]
139 โ {...(weekStartsOn === undefined ? {} : { weekStartsOn })}
140 โ disabled={{ before: new Date(new Date().setHours(0, 0, 0, 0)) }}
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
141 โ onSelect={(selected) => {
โฐโโโโ
help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/state/use-vcs-action-state.ts:86:5]
83 โ const [nowMs, setNowMs] = useState(() => Date.now());
84 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
85 โ if (!actionState.isRunning) return;
86 โ setNowMs(Date.now());
ยท โโโโโฌโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
87 โ const interval = setInterval(() => setNowMs(Date.now()), 1000);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[apps/mobile/src/state/use-composer-drafts.ts:1022:15]
1021 โ instanceId,
1022 โ { ...(persisted.modelOptionMemory[instanceId] ?? {}), ...models },
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
1023 โ ]),
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ typescript(no-extraneous-class): Unexpected class with only a constructor.
โญโ[apps/desktop/src/preview/Manager.test.ts:158:18]
157 โ BrowserWindow: browserWindowConstructor,
158 โ โญโโถ ClipboardItem: class {
159 โ โ constructor(data: Record<string, unknown>) {
160 โ โ clipboardItemConstructor(data);
161 โ โ }
162 โ โฐโโถ },
163 โ clipboard: {
โฐโโโโ
help: Try replacing this class with a standalone function or deleting it entirely
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[packages/provider-opencode/src/server/OpenCodeRuntime.environment.test.ts:53:14]
52 โ
53 โ for (const {} of [
ยท โโ
54 โ { healthy: true },
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[scripts/lib/cli-external-packages.test.ts:114:11]
113 โ const declared = {
114 โ ...(manifest.dependencies ?? {}),
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
115 โ ...(manifest.optionalDependencies ?? {}),
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[scripts/lib/cli-external-packages.test.ts:115:11]
114 โ ...(manifest.dependencies ?? {}),
115 โ ...(manifest.optionalDependencies ?? {}),
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
116 โ ...(manifest.peerDependencies ?? {}),
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[scripts/lib/cli-external-packages.test.ts:116:11]
115 โ ...(manifest.optionalDependencies ?? {}),
116 โ ...(manifest.peerDependencies ?? {}),
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
117 โ };
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ eslint(no-unused-vars): Variable 'useDragRegion' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/web/src/components/preview/PreviewPanelShell.tsx:61:9]
60 โ ) {
61 โ const useDragRegion = isElectron && props.mode !== "sheet" && props.mode !== "embedded";
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ 'useDragRegion' is declared here
62 โ const isInline = props.mode === "inline";
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
โญโ[packages/provider-opencode/src/server/adapter.ts:3755:7]
3754 โ
3755 โ const layer: Layer.Layer<ProviderAdapter.ProviderAdapterV2, never, OpenCodeAdapterV2DriverEnv> =
ยท โโโฌโโ
ยท โฐโโ 'layer' is declared here
3756 โ Layer.effect(
โฐโโโโ
help: Consider removing this declaration.
โ 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.
โญโ[apps/server/src/background/HostPowerMonitor.test.ts:133:11]
132 โ const monitor = yield* HostPowerMonitor.HostPowerMonitor;
133 โ โญโโถ for (
134 โ โ let attempt = 0;
135 โ โ attempt < 100 && (yield* monitor.snapshot).onBattery !== "true";
136 โ โ attempt += 1
137 โ โ ) {
138 โ โ yield* Effect.yieldNow;
139 โ โฐโโถ }
140 โ expect((yield* monitor.snapshot).onBattery).toBe("true");
โฐโโโโ
โ unicorn(require-module-specifiers): Empty import specifier is not allowed
โญโ[apps/server/src/sourceControl/SourceControlProviderRegistry.ts:15:13]
14 โ } from "@t3tools/contracts";
15 โ import type {} from "@t3tools/contracts";
ยท โโ
16 โ
โฐโโโโ
help: Remove empty braces
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:333:7]
328 โ };
329 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
330 โ if (!guidesEnabled && section === "guide") {
331 โ requestedSection.current = "overview";
332 โ currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
333 โ setSection("overview");
ยท โโโโโโฌโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
334 โ }
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found missing effect dependencies
โญโ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:6]
330 โ if (!guidesEnabled && section === "guide") {
331 โ requestedSection.current = "overview";
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ Missing dependency `requestedSection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
332 โ currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
ยท โโโโโโโโโโฌโโโโโโโโโ โโโโโโโฌโโโโโโ
ยท โ โฐโโ Missing dependency `scrollOffsets`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
ยท โฐโโ Missing dependency `currentScrollOffset`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
333 โ setSection("overview");
334 โ }
335 โ }, [guidesEnabled, section, insets.top]);
ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
336 โ const tabContent = activityContent;
โฐโโโโ
help: Missing dependencies can cause an effect to fire less often than it should
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found missing effect dependencies
โญโ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:877:6]
860 โ if (
861 โ lastSelection.current.path === route.params.path &&
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ Missing dependency `lastSelection`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
862 โ lastSelection.current.id === route.params.fileSelectionId
863 โ )
864 โ return;
865 โ lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
866 โ if (route.params.focus) navigation.setParams({ focus: undefined });
867 โ setJumpPath(route.params.path);
868 โ setSelectedRowId(null);
869 โ jumpStarted.current = false;
870 โ const file = data.files.find((entry) => entry.path === route.params.path);
871 โ if (!file || !nativeView.current) return;
ยท โโโโโโฌโโโโ
ยท โฐโโ Missing dependency `nativeView`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
872 โ setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
873 โ jumpStarted.current = true;
874 โ void nativeView.current.scrollToFile(file.id, false).catch(() => {
875 โ jumpStarted.current = false;
876 โ });
877 โ }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
878 โ const appliedFilter = useRef(filter.hideTestFiles);
โฐโโโโ
help: Missing dependencies can cause an effect to fire less often than it should
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ eslint(no-unused-vars): Function 'resolveThreadWorkspaceCwd' is declared but never used.
โญโ[apps/server/src/checkpointing/Utils.ts:12:10]
11 โ
12 โ function resolveThreadWorkspaceCwd(input: {
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ 'resolveThreadWorkspaceCwd' is declared here
13 โ readonly thread: {
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/usage/UsageService.ts:169:7]
168 โ
169 โ const layerTest = Layer.succeed(
ยท โโโโโฌโโโโ
ยท โฐโโ 'layerTest' is declared here
170 โ UsageService,
โฐโโโโ
help: Consider removing this declaration.
โ t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
โญโ[apps/server/src/serverSettings.test.ts:1741:32]
1740 โ const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
ยท โโโโโโโโโโโโโโโโโโโ
1742 โ const scriptsJson = yield* Schema.encodeEffect(
โฐโโโโ
โ t3code(no-inline-schema-compile): Hoist Schema.encodeEffect(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
โญโ[apps/server/src/serverSettings.test.ts:1742:34]
1741 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
1742 โ const scriptsJson = yield* Schema.encodeEffect(
ยท โโโโโโโโโโโโโโโโโโโ
1743 โ Schema.fromJsonString(Schema.Array(ProjectScript)),
โฐโโโโ
โ 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.
โญโ[apps/server/src/usage/UsageService.test.ts:2615:7]
2614 โ let orphanedAt: number | undefined;
2615 โ โญโโถ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2616 โ โ const tasks: Array<() => void> = [];
2617 โ โ const dispatcher: Scheduler.SchedulerDispatcher = {
2618 โ โ scheduleTask: (task) => tasks.push(task),
2619 โ โ flush: () => {
2620 โ โ let task: (() => void) | undefined;
2621 โ โ while ((task = tasks.shift()) !== undefined) task();
2622 โ โ },
2623 โ โ };
2624 โ โ
2625 โ โ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2626 โ โ let requestChecks = 0;
2627 โ โ const scheduler: Scheduler.Scheduler = {
2628 โ โ executionMode: "async",
2629 โ โ makeDispatcher: () => dispatcher,
2630 โ โ shouldYield: (fiber) => {
2631 โ โ if (fiber !== requestFiber) return false;
2632 โ โ requestChecks += 1;
2633 โ โ if (requestChecks !== interruptAt) return false;
2634 โ โ fiber.interruptUnsafe();
2635 โ โ return true;
2636 โ โ },
2637 โ โ };
2638 โ โ
2639 โ โ const input: UsageSummaryInput = {
2640 โ โ ...WINDOW,
2641 โ โ sinceDay: UsageDay.make("2026-09-01"),
2642 โ โ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2643 โ โ };
2644 โ โ const first = yield* service
2645 โ โ .readSummary(input)
2646 โ โ .pipe(
2647 โ โ Effect.exit,
2648 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2649 โ โ Effect.forkChild,
2650 โ โ );
2651 โ โ requestFiber = first;
2652 โ โ yield* Effect.yieldNow;
2653 โ โ dispatcher.flush();
2654 โ โ
2655 โ โ const second = yield* service.readSummary(input).pipe(
2656 โ โ Effect.match({
2657 โ โ onFailure: (error) => error.reason,
2658 โ โ onSuccess: () => "success" as const,
2659 โ โ }),
2660 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2661 โ โ Effect.forkChild,
2662 โ โ );
2663 โ โ yield* Effect.yieldNow;
2664 โ โ dispatcher.flush();
2665 โ โ const secondExit = second.pollUnsafe();
2666 โ โ if (secondExit === undefined) {
2667 โ โ second.interruptUnsafe();
2668 โ โ orphanedAt = interruptAt;
2669 โ โ break;
2670 โ โ }
2671 โ โ if (Exit.isFailure(secondExit)) {
2672 โ โ assert.fail("the matching request fiber was interrupted");
2673 โ โ }
2674 โ โ assert.strictEqual(secondExit.value, "invalidWindow");
2675 โ โฐโโถ }
2676 โ
โฐโโโโ
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/terminal/TerminalContextSheet.tsx:72:15]
71 โ <Pressable
72 โ key={index}
ยท โโโโโโโโโโโ
73 โ accessibilityRole="button"
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
โญโ[apps/server/src/auth/RpcAuthorization.ts:237:17]
236 โ const requiredScopesForSettingsUpdate = (payload: unknown) => {
237 โ const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
ยท โโโโโโโโโโโโโโโโโโโโโโโโ
238 โ const scopes = requiredScopesForServerSettingsPatch(input.patch);
โฐโโโโ
โ t3code(no-inline-schema-compile): Hoist Schema.decodeUnknownSync(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
โญโ[apps/server/src/auth/RpcAuthorization.ts:256:26]
255 โ if (method === WS_METHODS.assetsCreateUrl) {
256 โ const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
ยท โโโโโโโโโโโโโโโโโโโโโโโโ
257 โ return [
โฐโโโโ
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/process/externalLauncher.test.ts:186:12]
185 โ
186 โ for (const {} of ["darwin", "linux"] as const) {
ยท โโ
187 โ }
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/process/externalLauncher.test.ts:189:12]
188 โ
189 โ for (const {} of [
ยท โโ
190 โ { kind: "browser", folderVerb: "none" },
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/process/externalLauncher.test.ts:311:12]
310 โ
311 โ for (const {} of ["rejected", "spawn-error", "stalled"] as const) {
ยท โโ
312 โ }
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/process/externalLauncher.test.ts:314:12]
313 โ
314 โ for (const {} of [
ยท โโ
315 โ {
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:643:5]
638 โ
639 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
640 โ if (pendingLaunchEntry.key === launchTargetKey) {
641 โ return;
642 โ }
643 โ setPendingLaunchEntry({
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
644 โ key: launchTargetKey,
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:653:5]
648 โ
649 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
650 โ if (initialAttachGridEntry.key === launchTargetKey) {
651 โ return;
652 โ }
653 โ setInitialAttachGridEntry({
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
654 โ key: launchTargetKey,
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:746:7]
743 โ
744 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
745 โ if (!routeEnvironmentId || !routeThreadId) {
746 โ setLastGridSize({
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
747 โ cols: DEFAULT_TERMINAL_COLS,
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:538:24]
537 โ });
538 โ }, [terminal.buffer, terminal.buffer.length, terminalKey]);
ยท โโโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Overly precise dependency `terminal.buffer.length`, use `terminal.buffer` instead
539 โ const cwd = terminal.summary?.cwd ?? selectedThreadProject?.workspaceRoot ?? null;
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:709:7]
708 โ sentInitialInputKeyRef.current = null;
709 โ }, [terminalKey]);
ยท โโโโโโฌโโโโโ
ยท โฐโโ Unnecessary dependency `terminalKey`
710 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:800:52]
799 โ };
800 โ }, [canOperateTerminal, isRunning, pasteSession, terminal.lifecycleVersion, terminalKey]);
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโฌโโโโโ
ยท โ โฐโโ Unnecessary dependency `terminalKey`
ยท โฐโโ Unnecessary dependency `terminal.lifecycleVersion`
801 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/terminal/ThreadTerminalRouteScreen.tsx:793:24]
792 โ }
793 โ const pasteSession = pasteSessionRef.current;
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Cannot access ref value during render
794 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/terminal/terminalLaunchContext.ts:117:5]
112 โ const [entry, setEntry] = useState(() => ({ key: input.targetKey, location: candidate }));
113 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
114 โ if (entry.key === input.targetKey && (entry.location !== null || candidate === null)) {
115 โ return;
116 โ }
117 โ setEntry({ key: input.targetKey, location: candidate });
ยท โโโโโฌโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
118 โ }, [candidate, entry.key, entry.location, input.targetKey]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(static-components): Cannot create components during render
โญโ[apps/mobile/src/features/terminal/NativeTerminalSurface.tsx:234:10]
196 โ const { onInput, onResize } = props;
197 โ const NativeTerminalSurfaceView = resolveNativeTerminalSurfaceView();
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ The component is created during render here
198 โ const hasNativeSurface = Boolean(NativeTerminalSurfaceView);
199 โ
200 โ useEffect(() => {
201 โ terminalDebugLog("native:surface", {
202 โ terminalKey: props.terminalKey,
203 โ native: hasNativeSurface,
204 โ hardwareKeyRevision: getNativeTerminalHardwareKeyRevision(),
205 โ bufferLen: props.buffer.length,
206 โ isRunning: props.isRunning,
207 โ });
208 โ }, [hasNativeSurface, props.buffer.length, props.isRunning, props.terminalKey]);
209 โ const handleNativeInput = useCallback(
210 โ (event: NativeSyntheticEvent<TerminalInputEvent>) => {
211 โ if (!props.isRunning || props.readOnly) {
212 โ return;
213 โ }
214 โ terminalDebugLog("native:onInput", {
215 โ codes: Array.from(event.nativeEvent.data, (char) => char.codePointAt(0)),
216 โ });
217 โ onInput(event.nativeEvent.data);
218 โ },
219 โ [onInput, props.isRunning, props.readOnly],
220 โ );
221 โ const handleNativeResize = useCallback(
222 โ (event: NativeSyntheticEvent<TerminalResizeEvent>) => {
223 โ onResize({
224 โ cols: event.nativeEvent.cols,
225 โ rows: event.nativeEvent.rows,
226 โ });
227 โ },
228 โ [onResize],
229 โ );
230 โ
231 โ if (NativeTerminalSurfaceView) {
232 โ return (
233 โ <View style={props.style}>
234 โ <NativeTerminalSurfaceView
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ This component is created during render
235 โ appearanceScheme={themeAppearance}
โฐโโโโ
help: Components created during render will reset their state each time they are created. Declare components outside of render
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:155:7]
154 โ }
155 โ }, [wrappedRender]);
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ Unnecessary dependency `wrappedRender`
156 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
โญโ[apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx:800:42]
799 โ >
800 โ <AdaptiveWorkspaceContext.Provider value={contextValue}>
ยท โโโโโโโโโโโโโโโโโโโโ
801 โ <WindowHingeContext value={windowHinge}>
โฐโโโโ
help: Wrap the `value` prop in useMemo() or useCallback(), or use a constant value to prevent unnecessary re-renders.
Alternatively, move the value outside the render function if it doesn't depend on props or state.
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:42:5]
35 โ
36 โ const inspectorProgress = useSharedValue(inspectorVisible ? 1 : 0);
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ `inspectorProgress` originates here
37 โ const { renderedInspectorWidth } = props;
38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
39 โ
40 โ const onClosed = props.onClosed;
41 โ useEffect(() => {
42 โ inspectorProgress.value = withTiming(
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ `inspectorProgress` cannot be modified
43 โ inspectorVisible ? 1 : 0,
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/layout/workspace-inspector-pane.tsx:67:7]
37 โ const { renderedInspectorWidth } = props;
38 โ const renderedContentWidth = useSharedValue(inspectorWidth ?? 0);
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ `renderedContentWidth` originates here
39 โ
40 โ const onClosed = props.onClosed;
41 โ useEffect(() => {
42 โ inspectorProgress.value = withTiming(
43 โ inspectorVisible ? 1 : 0,
44 โ WORKSPACE_PANE_TIMING,
45 โ (finished) => {
46 โ if (finished === true && !inspectorVisible && onClosed !== undefined) {
47 โ runOnJS(onClosed)();
48 โ }
49 โ },
50 โ );
51 โ const targetWidth = inspectorVisible ? (inspectorWidth ?? 0) : 0;
52 โ renderedInspectorWidth.set(
53 โ resizing ? targetWidth : withTiming(targetWidth, WORKSPACE_PANE_TIMING),
54 โ );
55 โ }, [
56 โ inspectorProgress,
57 โ inspectorVisible,
58 โ inspectorWidth,
59 โ onClosed,
60 โ renderedInspectorWidth,
61 โ resizing,
62 โ ]);
63 โ
64 โ useEffect(() => {
65 โ const targetWidth = inspectorWidth ?? 0;
66 โ if (!inspectorVisible || resizing) {
67 โ renderedContentWidth.value = targetWidth;
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ `renderedContentWidth` cannot be modified
68 โ return;
โฐโโโโ
help: Modifying a value returned from a hook is not allowed. Consider moving the modification into the hook where the value is constructed
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/diffs/nativeReviewDiffSurface.ts:277:39]
276 โ
277 โ โญโโถ return createElement(RawNativeView, {
278 โ โ ...nativeProps,
279 โ โ refreshEnabled: props.onPullToRefresh !== undefined,
280 โ โ ref: nativeRef,
281 โ โโโถ });
ยท โฐโโโโ Passing a ref to a function may read its value during render
282 โ }
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(no-object-type-as-default-prop): Do not use an array literal as default prop value. Use a stable reference instead.
โญโ[apps/web/src/components/settings/SettingInheritance.tsx:163:24]
162 โ keys,
163 โ overridingProjects = [],
ยท โโ
164 โ onClearOverrides,
โฐโโโโ
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.
โ eslint(no-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/processRunner.test.ts:266:14]
265 โ
266 โ for (const {} of ["timeout", "success"] as const) {
ยท โโ
267 โ }
โฐโโโโ
help: Passing `null` or `undefined` will result in runtime error because `null` and `undefined` cannot be destructured.
โ 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.
โญโ[packages/effect-codex-app-server/src/schema.test.ts:50:18]
49 โ for (const tool of ["sendMessage", "followupTask", "interruptAgent", "listAgents"]) {
50 โ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
ยท โโโโโโโโโ
51 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
โฐโโโโ
โ 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.
โญโ[packages/effect-codex-app-server/src/schema.test.ts:51:18]
50 โ assert.equal(Schema.is(CodexSchema.ServerNotification__CollabAgentTool)(tool), true);
51 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentTool)(tool), true);
ยท โโโโโโโโโ
52 โ }
โฐโโโโ
โ 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.
โญโ[packages/effect-codex-app-server/src/schema.test.ts:55:5]
54 โ assert.equal(
55 โ Schema.is(CodexSchema.ServerNotification__CollabAgentToolCallStatus)("interrupted"),
ยท โโโโโโโโโ
56 โ true,
โฐโโโโ
โ 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.
โญโ[packages/effect-codex-app-server/src/schema.test.ts:59:5]
58 โ assert.equal(
59 โ Schema.is(CodexSchema.V2ThreadResumeResponse__CollabAgentToolCallStatus)("interrupted"),
ยท โโโโโโโโโ
60 โ true,
โฐโโโโ
โ 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.
โญโ[packages/effect-codex-app-server/src/schema.test.ts:103:16]
102 โ
103 โ assert.equal(Schema.is(CodexSchema.V2ThreadResumeResponse)(resumeResponse), true);
ยท โโโโโโโโโ
104 โ });
โฐโโโโ
โ eslint(no-unused-vars): Function 'promptResponseHasMissingXAiStopReason' is declared but never used.
โญโ[packages/provider-grok/src/server/xaiAcpExtension.ts:1620:10]
1619 โ
1620 โ function promptResponseHasMissingXAiStopReason(response: EffectAcpSchema.PromptResponse): boolean {
ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
ยท โฐโโ 'promptResponseHasMissingXAiStopReason' is declared here
1621 โ const meta = response._meta;
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-new): Do not use 'new' for side effects.
โญโ[apps/server/src/mcp/McpToolAccess.test.ts:168:3]
167 โ // @ts-expect-error a declaration constructed directly
168 โ new McpToolAccess.Declaration(unchecked);
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
169 โ // @ts-expect-error a handlers layer built outside McpToolAccess
โฐโโโโ
help: Assign the result of 'new' to a variable or compare it to a reference.
โ eslint(no-unused-vars): Variable 'revokeActiveMcpThread' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/mcp/McpSessionRegistry.ts:218:7]
217 โ
218 โ const revokeActiveMcpThread = (threadId: ThreadId): Effect.Effect<void> =>
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ 'revokeActiveMcpThread' is declared here
219 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeThread(threadId) : Effect.void;
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Variable 'revokeAllActiveMcpCredentials' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/mcp/McpSessionRegistry.ts:221:7]
220 โ
221 โ const revokeAllActiveMcpCredentials = (): Effect.Effect<void> =>
ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ 'revokeAllActiveMcpCredentials' is declared here
222 โ activeMcpSessionRegistry ? activeMcpSessionRegistry.revokeAll : Effect.void;
โฐโโโโ
help: Consider removing this declaration.
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/modules/t3-source-text/src/SourceText.tsx:36:9]
35 โ <T3SourceTextRunNativeComponent
36 โ key={index}
ยท โโโโโโโโโโโ
37 โ style={flattenedStyle}
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
โญโ[packages/provider-grok/src/server/adapter.ts:408:7]
407 โ
408 โ const layer: Layer.Layer<
ยท โโโฌโโ
ยท โฐโโ 'layer' is declared here
409 โ ProviderAdapter.ProviderAdapterV2,
โฐโโโโ
help: Consider removing this declaration.
โ unicorn(prefer-array-find): Prefer `find` over filtering and accessing the first result.
โญโ[apps/server/src/terminal/Manager.test.ts:731:31]
730 โ );
731 โ const snapshot = events.filter((event) => event.type === "snapshot").at(-1)?.snapshot;
ยท โโโโโโ
732 โ expect(snapshot?.history).toBe("aa๐\rEND");
โฐโโโโ
help: Use `find(predicate)` instead of `filter(predicate)[0]` or similar patterns.
โ 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.
โญโ[apps/server/src/project/ProjectService.test.ts:94:3]
93 โ ) {
94 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
95 โ โ const project = Option.getOrThrow(yield* service.getById(projectId));
96 โ โ if (predicate(project)) return project;
97 โ โ yield* Effect.yieldNow;
98 โ โฐโโถ }
99 โ return yield* Effect.die(`Project ${projectId} was not enriched in time.`);
โฐโโโโ
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:121:27]
120 โ const scope = makeScope(options.capabilities ?? new Set(["preview", "worktree"]));
121 โ const dispatch = vi.fn((_: unknown) =>
ยท โฌ
ยท โฐโโ '_' is declared here
122 โ (options.dispatchGate ?? Effect.void).pipe(
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:134:39]
133 โ );
134 โ const listLocalBranchNames = vi.fn((_: string) =>
ยท โฌ
ยท โฐโโ '_' is declared here
135 โ Effect.succeed(
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:178:31]
177 โ });
178 โ const sendToThread = vi.fn((_: unknown) => {
ยท โฌ
ยท โฐโโ '_' is declared here
179 โ switch (options.continuation ?? "queued") {
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:203:33]
202 โ );
203 โ const removeWorktree = vi.fn((_: unknown) =>
ยท โฌ
ยท โฐโโ '_' is declared here
204 โ options.removeWorktreeFails
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:208:36]
207 โ );
208 โ const deleteLocalBranch = vi.fn((_: unknown) =>
ยท โฌ
ยท โฐโโ '_' is declared here
209 โ options.deleteLocalBranchFails
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:213:42]
212 โ );
213 โ const fetchWorktreeBaseCommit = vi.fn((_: unknown) =>
ยท โฌ
ยท โฐโโ '_' is declared here
214 โ options.fetchWorktreeBaseFails
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:254:30]
253 โ );
254 โ const localStatus = vi.fn((_: unknown) =>
ยท โฌ
ยท โฐโโ '_' is declared here
255 โ Effect.succeed({
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[apps/server/src/mcp/WorktreeMcpService.test.ts:264:32]
263 โ );
264 โ const refreshStatus = vi.fn((_: string) => Effect.die("refreshStatus stub"));
ยท โฌ
ยท โฐโโ '_' is declared here
265 โ const runForThread = vi.fn((input: { readonly worktreePath: string }) => {
โฐโโโโ
help: Consider removing this parameter.
โ 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.
โญโ[apps/server/src/project/ProjectEnrichmentService.test.ts:28:3]
27 โ ) {
28 โ โญโโถ for (let attempt = 0; attempt < 100; attempt += 1) {
29 โ โ const available = yield* service.peek(workspaceRoot);
30 โ โ if (predicate(available)) return available;
31 โ โ yield* Effect.yieldNow;
32 โ โฐโโถ }
33 โ return yield* Effect.die(`Project metadata for ${workspaceRoot} was not resolved in time.`);
โฐโโโโ
โ eslint(no-unused-vars): Type 'AuthSessionState' is imported but never used.
โญโ[apps/web/src/components/settings/ProviderSettingsPanel.logic.ts:4:8]
3 โ AuthProvidersManageScope,
4 โ type AuthSessionState,
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ 'AuthSessionState' is imported here
5 โ type EnvironmentId,
โฐโโโโ
help: Consider removing this import.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:257:7]
256 โ return () => cancelAnimationFrame(frame);
257 โ }, [props.path, targetIndex]);
ยท โโโโโโฌโโโโ
ยท โฐโโ Unnecessary dependency `props.path`
258 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:293:23]
292 โ <SourceText
293 โ key={`${index}:${tokenIndex}`}
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
294 โ style={{
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/files/SourceFileSurface.tsx:309:27]
308 โ return (
309 โ <SourceText key={index}>
ยท โโโโโโโโโโโ
310 โ {body}
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ eslint(no-unused-vars): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
โญโ[packages/provider-cursor/src/server/auth.ts:249:20]
248 โ },
249 โ (effect, flow, stopSessions) =>
ยท โโโโโโโฌโโโโโ
ยท โฐโโ 'stopSessions' is declared here
250 โ effect.pipe(
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-control-regex): Unexpected control character
โญโ[apps/mobile/src/features/settings/SettingsProviderAccountsRouteScreen.tsx:220:46]
219 โ <Text selectable className="font-mono text-sm text-foreground">
220 โ {interaction.output.replace(/\x1b\[[0-?]*[ -/]*[@-~]/g, "")}
ยท โโโฌโ
ยท โฐโโ 'U+001B' is a control character.
221 โ </Text>
โฐโโโโ
help: Avoid matching control characters in regular expressions. If intentional, disable this rule for the expression.
โ react(memo-dependencies): Found extra memoization dependencies
โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:100:85]
99 โ const startEditor = startScheduledTaskEditor;
100 โ const resetEditor = useCallback(() => startEditor(defaultEditor), [defaultEditor, startEditor]);
ยท โโโโโโฌโโโโโ
ยท โฐโโ Unnecessary dependency `startEditor`
101 โ const readEditor = useCallback(
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(memo-dependencies): Found extra memoization dependencies
โญโ[apps/mobile/src/features/settings/scheduled-task-editor.tsx:121:7]
120 โ setEditor,
121 โ startEditor,
ยท โโโโโโฌโโโโโ
ยท โฐโโ Unnecessary dependency `startEditor`
122 โ hasChanges,
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ eslint(no-empty-pattern): Empty array binding pattern
โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1437:12]
1436 โ
1437 โ for (const [] of [
ยท โโ
1438 โ ["github", "github.com"],
โฐโโโโ
help: Passing non-iterable values (null, undefined, numbers, booleans, etc.) will result in a runtime error because these values are not iterable.
โ 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.
โญโ[packages/effect-acp/src/schema.test.ts:18:12]
17 โ const command = { name: "plan", description: "Make a plan", input: { hint: "Task" } };
18 โ expect(Schema.is(V1.AvailableCommand)(command)).toBe(true);
ยท โโโโโโโโโ
19 โ expect(
โฐโโโโ
โ 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.
โญโ[packages/effect-acp/src/schema.test.ts:20:7]
19 โ expect(
20 โ Schema.is(V2.AvailableCommand)({ ...command, input: { type: "text", hint: "Task" } }),
ยท โโโโโโโโโ
21 โ ).toBe(true);
โฐโโโโ
โ 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.
โญโ[packages/effect-acp/src/client.ts:1269:11]
1268 โ extNotificationHandlers.set(CLIENT_METHODS.mcp_message, (params) =>
1269 โ Schema.decodeUnknownEffect(AcpSchemaV2.MessageMcpNotification)(params).pipe(
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
1270 โ Effect.mapError(() => AcpError.AcpRequestError.invalidParams()),
โฐโโโโ
โ 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.
โญโ[packages/effect-acp/src/errors.test.ts:129:28]
128 โ const secret = "acp-summary-secret";
129 โ const cause = yield* Schema.decodeUnknownEffect(
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
130 โ Schema.Struct({
โฐโโโโ
โ 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.
โญโ[packages/effect-acp/src/protocol.test.ts:500:31]
499 โ
500 โ const response = yield* Schema.decodeUnknownEffect(
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโ
501 โ Schema.fromJsonString(JsonRpcErrorResponse),
โฐโโโโ
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:119:10]
117 โ
118 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
119 โ void refreshNotifications();
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
120 โ const subscription = AppState.addEventListener("change", (state) => {
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx:128:7]
125 โ
126 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
127 โ if (!isLoaded) {
128 โ setLiveActivityStatus("checking");
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
129 โ return;
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:60:5]
55 โ
56 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
57 โ scheduler.reset();
58 โ highlightedRowIdsRef.current = new Set();
59 โ visibleChunkIndexRef.current = 0;
60 โ setVisibleRange({ firstRowIndex: 0, lastRowIndex: 80 });
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
61 โ setTokensPatchJson(createEmptyTokenPatch(resetKey));
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/review/useNativeReviewDiffHighlighting.ts:63:7]
62 โ return () => scheduler.cancel();
63 โ }, [enabled, resetKey, rows.length, scheduler]);
ยท โโโโฌโโโ โโโโโโฌโโโโโ
ยท โ โฐโโ Unnecessary dependency `rows.length`
ยท โฐโโ Unnecessary dependency `enabled`
64 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ eslint(no-unused-vars): Variable 'layerTest' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/telemetry/AnalyticsService.ts:340:7]
339 โ
340 โ const layerTest = AnalyticsService.layerTest;
ยท โโโโโฌโโโโ
ยท โฐโโ 'layerTest' is declared here
โฐโโโโ
help: Consider removing this declaration.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:107:5]
104 โ
105 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
106 โ clearReviewCommentTarget();
107 โ setPendingNativeCommentSelection(null);
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
108 โ }, [selectedSection?.id]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:112:7]
109 โ
110 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
111 โ if (activeCommentTarget === null) {
112 โ setPendingNativeCommentSelection(null);
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
113 โ }
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/review/useReviewCommentSelectionController.ts:108:7]
107 โ setPendingNativeCommentSelection(null);
108 โ }, [selectedSection?.id]);
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `selectedSection?.id`
109 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:223:31]
222 โ ? snippetTokens.map((line, lineIndex) => (
223 โ <NativeText key={lineIndex}>
ยท โโโโโโโโโโโโโโโ
224 โ {lineIndex > 0 ? "\n" : ""}
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/review/ReviewCommentCard.tsx:227:25]
226 โ <NativeText
227 โ key={tokenIndex}
ยท โโโโโโโโโโโโโโโโ
228 โ style={{
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ t3code(no-inline-schema-compile): Hoist Schema.decodeEffect(...) to module scope: the compiled function is rebuilt on every call. Move it to a module-level const.
โญโ[apps/server/src/vcs/GitVcsDriverCore.test.ts:1786:34]
1785 โ const stat = branch.files!.find((file) => file.path === path)!;
1786 โ const request = yield* Schema.decodeEffect(ReviewDiffPreviewInput)({
ยท โโโโโโโโโโโโโโโโโโโ
1787 โ cwd,
โฐโโโโ
โ unicorn(prefer-string-starts-ends-with): Prefer String#startsWith over a regex with a caret.
โญโ[apps/server/src/vcs/GitVcsDriverCore.ts:517:11]
516 โ GIT_DIAGNOSTIC_LINE_PATTERN.test(line) ||
517 โ (!/^remote:/.test(line) && SSH_TRANSPORT_REFUSAL_PATTERN.test(line)),
ยท โโโโโโโโโโโโโโโ
518 โ )
โฐโโโโ
help: Replace `/^remote:/.test(line)` with `line.startsWith('remote:')`.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/workspace/WorkspaceToolbar.ios.tsx:114:33]
113 โ return () => cancelAnimationFrame(frame);
114 โ }, [restoreSearch, tabActive, bottomSearch]);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Unnecessary dependency `bottomSearch`
115 โ const composeButton = nativeToolbarCompose ? (
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:454:7]
453 โ showAuxiliaryPane("inspector");
454 โ }, [environmentId, showAuxiliaryPane, threadId]);
ยท โโโโโโโฌโโโโโโ โโโโโฌโโโ
ยท โ โฐโโ Unnecessary dependency `threadId`
ยท โฐโโ Unnecessary dependency `environmentId`
455 โ const {
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(static-components): Cannot create components during render
โญโ[apps/mobile/src/features/review/ReviewSheet.tsx:725:20]
492 โ // same check.
493 โ const NativeReviewDiffView = resolveNativeReviewDiffView();
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
ยท โฐโโ The component is created during render here
494 โ const nativeReviewDiffViewRef = useRef<NativeReviewDiffViewHandle>(null);
495 โ const showcasedReviewDrawRef = useRef<string | null>(null);
496 โ const [isPullRefreshing, setIsPullRefreshing] = useState(false);
497 โ const handlePullToRefresh = async () => {
498 โ setIsPullRefreshing(true);
499 โ await refreshSelectedSection();
500 โ setIsPullRefreshing(false);
501 โ };
502 โ const reviewFileNavigatorRef = useRef<ReviewFileNavigatorHandle>(null);
503 โ const reviewFiles = parsedDiff.kind === "files" ? parsedDiff.files : [];
504 โ const fileVisibility = useReviewFileVisibility({
505 โ threadKey: reviewCache.threadKey,
506 โ sectionId: selectedSection?.id ?? null,
507 โ files: reviewFiles,
508 โ cachedExpandedFileIds: selectedSection?.id
509 โ ? reviewCache.expandedFileIdsBySection[selectedSection.id]
510 โ : undefined,
511 โ cachedViewedFileIds: selectedSection?.id
512 โ ? reviewCache.viewedFileIdsBySection[selectedSection.id]
513 โ : undefined,
514 โ });
515 โ const { collapsedFileIds, toggleExpandedFile, toggleViewedFile, viewedFileIds } = fileVisibility;
516 โ const commentSelection = useReviewCommentSelectionController({
517 โ environmentId,
518 โ threadId,
519 โ selectedSection,
520 โ nativeReviewDiffData,
521 โ });
522 โ const nativeBridge = useNativeReviewDiffBridge({
523 โ threadKey: reviewCache.threadKey,
524 โ sectionId: selectedSection?.id ?? null,
525 โ diff: selectedSection?.diff,
526 โ data: nativeReviewDiffData,
527 โ collapsedFileIds,
528 โ viewedFileIds,
529 โ selectedRowIds: commentSelection.selectedRowIds,
530 โ canHighlight: parsedDiff.kind === "files",
531 โ });
532 โ const showcaseReviewKey =
533 โ SHOWCASE_ENABLED && parsedDiff.kind === "files" && selectedSection
534 โ ? `${reviewCache.threadKey}:${selectedSection.id}:${nativeBridge.tokensResetKey}:${nativeBridge.themeId}`
535 โ : null;
536 โ const handleNativeDebug = (event: NativeSyntheticEvent<Record<string, unknown>>) => {
537 โ nativeBridge.onDebug(event);
538 โ if (
539 โ showcaseReviewKey === null ||
540 โ showcasedReviewDrawRef.current === showcaseReviewKey ||
541 โ !isNativeReviewDiffDrawEvent(event.nativeEvent)
542 โ ) {
543 โ return;
544 โ }
545 โ showcasedReviewDrawRef.current = showcaseReviewKey;
546 โ reportShowcaseSceneRendered({ scene: "review", themeId: nativeBridge.themeId });
547 โ };
548 โ
549 โ const handleSelectFile = async (fileId: string | null) => {
550 โ loadVisibleFile(fileId, true);
551 โ commentSelection.clearSelection();
552 โ if (fileId !== null && collapsedFileIds.includes(fileId)) {
553 โ toggleExpandedFile(fileId);
554 โ }
555 โ const nativeView = nativeReviewDiffViewRef.current;
556 โ if (!nativeView) return;
557 โ const result = await settlePromise(() =>
558 โ fileId === null ? nativeView.scrollToTop(true) : nativeView.scrollToFile(fileId, true),
559 โ );
560 โ if (AsyncResult.isFailure(result)) {
561 โ console.error("[review] Failed to navigate to diff file", squashAtomCommandFailure(result));
562 โ }
563 โ };
564 โ const handleVisibleFileChange = (
565 โ event: NativeSyntheticEvent<{ readonly fileId?: string | null }>,
566 โ ) => {
567 โ loadVisibleFile(event.nativeEvent.fileId ?? null);
568 โ reviewFileNavigatorRef.current?.setVisibleFile(event.nativeEvent.fileId ?? null);
569 โ };
570 โ const renderInspector = () => (
571 โ <ReviewFileNavigator
572 โ ref={reviewFileNavigatorRef}
573 โ files={nativeReviewDiffData.files}
574 โ headerInset={insets.top}
575 โ sectionId={selectedSection?.id ?? null}
576 โ onSelectFile={(fileId) => void handleSelectFile(fileId)}
577 โ />
578 โ );
579 โ
580 โ const handleNativeToggleFile = (event: NativeSyntheticEvent<{ readonly fileId?: string }>) => {
581 โ const { fileId } = event.nativeEvent;
582 โ if (fileId) {
583 โ loadVisibleFile(fileId, true);
584 โ toggleExpandedFile(fileId);
585 โ }
586 โ };
587 โ
588 โ const handleNativeToggleViewedFile = (
589 โ event: NativeSyntheticEvent<{ readonly fileId?: string }>,
590 โ ) => {
591 โ const { fileId } = event.nativeEvent;
592 โ if (fileId) {
593 โ toggleViewedFile(fileId);
594 โ }
595 โ };
596 โ
597 โ const parsedDiffNotice =
598 โ parsedDiff.kind === "files" || parsedDiff.kind === "raw" ? parsedDiff.notice : null;
599 โ const hasCachedSelectedDiff = selectedSection?.diff != null;
600 โ const hasAnyCachedDiff = reviewSections.some((section) => section.diff != null);
601 โ const sectionMenu = buildReviewSectionMenu(reviewSections);
602 โ const { showConnectionNotice, showSectionToolbar } = resolveReviewAvailability({
603 โ hasEnvironmentPresentation: environment.isReady,
604 โ isEnvironmentConnected: isEnvironmentReady,
605 โ hasCachedSelectedDiff,
606 โ hasAnyCachedDiff,
607 โ });
608 โ const handleRetryEnvironment = () => {
609 โ void retryEnvironment(environmentId);
610 โ };
611 โ const handleReturnToThread = () => {
612 โ if (navigation.canGoBack()) {
613 โ navigation.goBack();
614 โ return;
615 โ }
616 โ navigation.navigate("Thread", {
617 โ environmentId: String(environmentId),
618 โ threadId: String(threadId),
619 โ });
620 โ };
621 โ const androidHeaderSubtitle = [
622 โ selectedSection?.title,
623 โ headerDiffSummary.additions,
624 โ headerDiffSummary.deletions,
625 โ ]
626 โ .filter((part): part is string => Boolean(part))
627 โ .join(" ยท ");
628 โ
629 โ const showChangedFilesPane =
630 โ !showConnectionNotice &&
631 โ selectedSection !== null &&
632 โ parsedDiff.kind === "files" &&
633 โ NativeReviewDiffView !== null;
634 โ useRegisterWorkspaceInspector(showChangedFilesPane ? renderInspector : undefined);
635 โ const showChangedFilesToggle = panes.supportsAuxiliaryPane && showChangedFilesPane;
636 โ
637 โ const listHeader = (() => {
638 โ const children: ReactElement[] = [];
639 โ
640 โ if (error) {
641 โ children.push(
642 โ <View
643 โ key="review-error"
644 โ className={cn(
645 โ "bg-card px-4 py-3",
646 โ Platform.OS === "android" ? "m-2 rounded-[20px]" : "border-b border-border",
647 โ )}
648 โ >
649 โ <Text className="text-sm font-t3-bold text-foreground">Review unavailable</Text>
650 โ <Text className="text-xs leading-normal text-foreground-muted">{error}</Text>
651 โ </View>,
652 โ );
653 โ }
654 โ
655 โ if (parsedDiffNotice) {
656 โ children.push(<ReviewNotice key="review-notice" notice={parsedDiffNotice} />);
657 โ }
658 โ
659 โ if (children.length === 0) {
660 โ return null;
661 โ }
662 โ
663 โ return <>{children}</>;
664 โ })();
665 โ const headerSubtitle = [
666 โ headerDiffSummary.additions,
667 โ headerDiffSummary.deletions,
668 โ pendingReviewCommentCount > 0
669 โ ? `${pendingReviewCommentCount} comment${pendingReviewCommentCount === 1 ? "" : "s"}`
670 โ : null,
671 โ ]
672 โ .filter(Boolean)
673 โ .join(" ยท ");
674 โ const headerTitleText = selectedSection?.title ?? "Review changes";
675 โ
676 โ return (
677 โ <>
678 โ <ReviewHeader
679 โ environmentId={environmentId}
680 โ threadId={threadId}
681 โ title={headerTitleText}
682 โ subtitle={headerSubtitle}
683 โ androidSubtitle={androidHeaderSubtitle}
684 โ iconColor={headerIcon}
685 โ selectedThreadCwd={selectedThreadCwd}
686 โ sectionMenu={sectionMenu}
687 โ selectedSection={selectedSection}
688 โ showSectionToolbar={showSectionToolbar}
689 โ showChangedFilesToggle={showChangedFilesToggle}
690 โ onRefresh={handlePullToRefresh}
691 โ onSelectSection={selectSection}
692 โ onReturnToThread={handleReturnToThread}
693 โ />
694 โ
695 โ <ScreenContent>
696 โ <View className="flex-1 bg-sheet android:bg-sheet-solid">
697 โ {showConnectionNotice ? (
698 โ <View className="flex-1" style={{ paddingTop: topContentInset }}>
699 โ <EnvironmentConnectionNotice
700 โ environmentLabel={environment.presentation?.entry.target.label ?? "Environment"}
701 โ connection={
702 โ environment.presentation?.connection ?? {
703 โ phase: "available",
704 โ error: null,
705 โ traceId: null,
706 โ }
707 โ }
708 โ resourceName="review"
709 โ onRetry={handleRetryEnvironment}
710 โ />
711 โ </View>
712 โ ) : selectedSection && parsedDiff.kind === "files" && NativeReviewDiffView ? (
713 โ <View
714 โ className="flex-1"
715 โ style={{
716 โ backgroundColor: nativeBridge.theme.background,
717 โ }}
718 โ >
719 โ <View
720 โ className="min-w-0 flex-1"
721 โ style={listHeader ? { paddingTop: topContentInset } : undefined}
722 โ >
723 โ {listHeader}
724 โ <View className="min-w-0 flex-1" collapsable={false}>
725 โ <NativeReviewDiffView
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ This component is created during render
726 โ collapsable={false}
โฐโโโโ
help: Components created during render will reset their state each time they are created. Declare components outside of render
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/review/ReviewCommentComposerSheet.tsx:103:7]
100 โ
101 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
102 โ if (!target || selectedLines.length === 0) {
103 โ setHighlightedLinesById({});
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
104 โ return;
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/features/home/thread-swipe-actions.tsx:494:27]
493 โ >
494 โ {props.children(close)}
ยท โโโฌโโ
ยท โฐโโ Cannot access ref value during render
495 โ </ReanimatedSwipeable>
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/components/ProjectFavicon.tsx:172:5]
167 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
168 โ useLayoutEffect(() => {
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ This is the containing effect
169 โ if (faviconRequest === null) return;
170 โ
171 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
172 โ setActiveFaviconRequest(faviconRequest);
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
173 โ return endRequest;
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/components/ComposerContextSheet.tsx:272:25]
271 โ {record.elements?.map((element, index) => (
272 โ <View key={`${element.selector ?? element.tagName}:${index}`} className="gap-3">
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
273 โ <ContextField
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/components/VideoPreviewModal.ios.tsx:63:55]
61 โ }, []);
62 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
63 โ if (playbackUrl === null && resolvedUrl !== null) setPlaybackUrl(resolvedUrl);
ยท โโโโโโโโฌโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
64 โ }, [playbackUrl, resolvedUrl]);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/components/ComposerEditor.tsx:82:6]
81 โ },
82 โ [draftKey],
ยท โโโโโฌโโโ
ยท โฐโโ Unnecessary dependency `draftKey`
83 โ );
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:60:5]
57 โ
58 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
59 โ const controller = new AbortController();
60 โ setLoadState("pending");
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
61 โ // A renewed signature is used on Retry, not as a reason to reset the native player.
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/components/MediaVideoPlayer.tsx:71:7]
70 โ return () => controller.abort();
71 โ }, [player, props.playRequested, attempt]);
ยท โโโโฌโโ โโโโโโโโโโฌโโโโโโโโโ โโโโฌโโโ
ยท โ โ โฐโโ Unnecessary dependency `attempt`
ยท โ โฐโโ Unnecessary dependency `props.playRequested`
ยท โฐโโ Unnecessary dependency `player_0`
72 โ
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:68:5]
66 โ const { id: attachmentId, fileUri } = attachment;
67 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
68 โ setUri(null);
ยท โโโโฌโโ
ยท โฐโโ Avoid calling setState() directly within an effect
69 โ setError(null);
โฐโโโโ
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.
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/set-state-in-effect
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:91:7]
90 โ };
91 โ }, [attachmentId, fileUri]);
ยท โโโโโโโฌโโโโโ โโโโฌโโโ
ยท โ โฐโโ Unnecessary dependency `fileUri`
ยท โฐโโ Unnecessary dependency `attachmentId`
92 โ const mimeType = videoMimeType(attachment) ?? attachment.mimeType;
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
โญโ[apps/mobile/src/components/VideoPreviewModal.tsx:213:34]
212 โ useEffect(() => {
213 โ if (!isFocused && hasSource) props.onRequestClose();
ยท โโโฌโโ
ยท โฐโโ Missing dependency `props`
214 โ }, [isFocused, hasSource, props.onRequestClose]);
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Overly precise dependency `props.onRequestClose`, use `props` instead
215 โ const { source } = props;
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/components/ui/Menu.tsx:54:36]
53 โ const child = children as ReactElement<Pick<PressableProps, "onTouchStart" | "onPress">>;
54 โ โญโโถ children = cloneElement(child, {
55 โ โ onTouchStart: (event) => {
56 โ โ // Reset for a new touch, not onPressIn, which also fires when a
57 โ โ // finger moves out of the row and back during the same gesture.
58 โ โ menuPress.current.isPreparing = false;
59 โ โ menuPress.current.suppressPress = menuPress.current.isOpen;
60 โ โ pendingPress.current = null;
61 โ โ child.props.onTouchStart?.(event);
62 โ โ },
63 โ โ onPress: (event) => {
64 โ โ // Accessibility clicks have no touch identifier and must not inherit
65 โ โ // cancellation from a previous physical gesture.
66 โ โ const isTouch = typeof event.nativeEvent.identifier === "number";
67 โ โ if (isTouch ? menuPress.current.suppressPress : menuPress.current.isOpen) {
68 โ โ return;
69 โ โ }
70 โ โ if (isTouch && menuPress.current.isPreparing) {
71 โ โ // A release can arrive between native menu preparation and display.
72 โ โ // Let UIKit's display/cancel callback decide this press's outcome.
73 โ โ event.persist();
74 โ โ pendingPress.current = () => child.props.onPress?.(event);
75 โ โ return;
76 โ โ }
77 โ โ child.props.onPress?.(event);
78 โ โ },
79 โ โโโถ });
ยท โฐโโโโ Passing a ref to a function may read its value during render
80 โ menuProps.onMenuInteractionStart = () => {
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(refs): Cannot access refs during render
โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:152:27]
151 โ <View ref={anchorRef} collapsable={false} className={props.className} style={props.style}>
152 โ {props.children(open)}
ยท โโโฌโ
ยท โฐโโ Cannot access ref value during render
153 โ </View>
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/refs
โ react(memo-dependencies): Found missing/extra memoization dependencies
โญโ[apps/mobile/src/components/ui/AndroidAnchoredMenu.tsx:140:9]
139 โ if (action.id !== undefined) {
140 โ props.onPressAction?.({
ยท โโโฌโโ
ยท โฐโโ Missing dependency `props`
141 โ nativeEvent: { event: action.id },
142 โ } as Parameters<NonNullable<MenuComponentProps["onPressAction"]>>[0]);
143 โ }
144 โ },
145 โ [close, props.onPressAction],
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Overly precise dependency `props.onPressAction`, use `props` instead
146 โ );
โฐโโโโ
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
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/components/CommandPalette.tsx:2037:20]
2036 โ title: inferProjectTitleFromPath(destinationPath),
2037 โ createdAt: new Date().toISOString(),
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
2038 โ remoteUrl: addProjectCloneFlow.remoteUrl,
โฐโโโโ
help: `Date` is an impure function. Calling an impure function can produce unstable results that update unpredictably when the component re-renders
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/purity
Found 0 errors and 367 warnings in 5477 files (5.8s, 8 threads)
Post job cleanup.
Cache hit occurred on the primary key electron-Linux-X64-854e11ddd491bd4f350eebb67a74265df119376a3984c8e153cfe5fc8ced6309, not saving cache.
Post job cleanup.
##[start-action display=Cache full pnpm store;id=__77dfdaa9-e6db-4945-8b73-b7ba2ecb681e.__actions_cache]
Post job cleanup.
Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-fa50cf9b003d547cd32552f61b874eb4abe5dace3fdb4b1abd9610da2da24074, not saving cache.
##[end-action id=__77dfdaa9-e6db-4945-8b73-b7ba2ecb681e.__actions_cache;outcome=success;conclusion=success;duration_ms=96]
##[start-action display=Cache Vite+;id=__77dfdaa9-e6db-4945-8b73-b7ba2ecb681e.vp_cache]
Post job cleanup.
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.
##[end-action id=__77dfdaa9-e6db-4945-8b73-b7ba2ecb681e.vp_cache;outcome=success;conclusion=success;duration_ms=64]
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/37438e74-43b1-4c3a-8d41-3b67d0ff0f75' before making global git config changes
Adding repository directory to the temporary git global config as a safe directory
[command]/usr/local/bin/git config --global --add safe.directory /home/runner/_work/t3code/t3code
Removing SSH command configuration
[command]/usr/local/bin/git config --local --name-only --get-regexp core\.sshCommand
[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' || :"
fatal: No url found for submodule path '.repos/alchemy-effect/submodules/distilled' in .gitmodules
Warning: The process '/usr/local/bin/git' failed with exit code 128
A job completed hook has been configured by the self-hosted runner administrator
โธ Run '/job_completed.sh'
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
env:
BLACKSMITH_RUNNER_MESSAGE_WAIT_MS: 164
BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 436
BLACKSMITH_CHECK_RUN_ID: 120979910217
BLACKSMITH_JOB_DISPLAY_NAME: Lint
GITHUB_ACTIONS_CACHE_MODE: write
Docker container cache not activated, skipping hash computation.
No active SSH sessions detected. Proceeding with shutdown immediately.
Cleaning up orphan processes