GitHub check
256 KB of 595 KB loaded Download the full log (595 KB)
339 KB of earlier output not loaded
/react.dev/reference/eslint-plugin-react-hooks/lints/exhaustive-deps
โ 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/features/threads/NewTaskDraftRouteScreen.tsx:84:5]
79 โ
80 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
81 โ if (!needsPreparation || !initialProjectRef.branch || waitingForProject) return;
82 โ const branchName = initialProjectRef.branch;
83 โ let active = true;
84 โ setPendingCheckouts((count) => count + 1);
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
85 โ // 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(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/components/ProjectFavicon.tsx:158:5]
153 โ const [activeFaviconRequest, setActiveFaviconRequest] = useState<typeof faviconRequest>(null);
154 โ useLayoutEffect(() => {
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ This is the containing effect
155 โ if (faviconRequest === null) return;
156 โ
157 โ const endRequest = beginProjectFaviconRequest(faviconRequest);
158 โ setActiveFaviconRequest(faviconRequest);
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
159 โ 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(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
โ 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/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
โ 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(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
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/NewTaskDraftScreen.tsx:553:7]
547 โ }, [cancelledIncomingShareId, navigation, props.incomingShareId]);
548 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
549 โ if (!isReturningToProjectPicker) {
550 โ return;
551 โ }
552 โ if (requestedInitialProjectAvailable) {
553 โ setIsReturningToProjectPicker(false);
ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
554 โ 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:701:9]
644 โ
645 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
646 โ if (props.pendingTaskId || props.draftId) {
647 โ return;
648 โ }
649 โ if (lastInitialProjectRefRef.current !== props.initialProjectRef) {
650 โ lastInitialProjectRefRef.current = props.initialProjectRef;
651 โ appliedInitialProjectKeyRef.current = null;
652 โ }
653 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
654 โ const initialProjectId = props.initialProjectRef?.projectId;
655 โ if (initialEnvironmentId && initialProjectId) {
656 โ const directProject =
657 โ projects.find(
658 โ (project) =>
659 โ project.environmentId === initialEnvironmentId && project.id === initialProjectId,
660 โ ) ?? null;
661 โ
662 โ if (directProject) {
663 โ // Apply the route's project once. Re-applying on every change would
664 โ // instantly revert environment/project switches made in the picker.
665 โ const directProjectKey = `${directProject.environmentId}:${directProject.id}`;
666 โ if (appliedInitialProjectKeyRef.current === directProjectKey) {
667 โ return;
668 โ }
669 โ if (props.initialProjectRef?.branch) {
670 โ if (
671 โ selectedProject?.environmentId !== directProject.environmentId ||
672 โ selectedProject.id !== directProject.id
673 โ ) {
674 โ setProject(directProject);
675 โ return;
676 โ }
677 โ if (!flow.draftKey) return;
678 โ // The route completes checkout before mounting this composer. Local
679 โ // mode reuses an existing worktree; worktree mode would create another.
680 โ updateComposerDraftSettings(flow.draftKey, {
681 โ workspaceSelection: {
682 โ mode: "local",
683 โ branch: props.initialProjectRef.branch,
684 โ worktreePath: props.initialProjectRef.worktreePath ?? null,
685 โ startFromOrigin: false,
686 โ },
687 โ });
688 โ }
689 โ appliedInitialProjectKeyRef.current = directProjectKey;
690 โ if (
691 โ selectedProject?.environmentId === directProject.environmentId &&
692 โ selectedProject.id === directProject.id
693 โ ) {
694 โ return;
695 โ }
696 โ setProject(directProject);
697 โ return;
698 โ }
699 โ
700 โ if (projects.length > 0) {
701 โ setIsReturningToProjectPicker(true);
ยท โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
702 โ }
โฐโโโโ
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:801:5]
742 โ
743 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
744 โ const shareId = props.incomingShareId;
745 โ const draftKey = flow.draftKey;
746 โ const destinationProject = selectedProject;
747 โ const initialEnvironmentId = props.initialProjectRef?.environmentId;
748 โ const initialProjectId = props.initialProjectRef?.projectId;
749 โ const selectedProjectMatchesRoute =
750 โ !initialEnvironmentId ||
751 โ !initialProjectId ||
752 โ (destinationProject?.environmentId === initialEnvironmentId &&
753 โ destinationProject.id === initialProjectId);
754 โ if (
755 โ !shareId ||
756 โ !draftKey ||
757 โ !destinationProject ||
758 โ !selectedProjectMatchesRoute ||
759 โ cancelledIncomingShareId === shareId
760 โ ) {
761 โ return;
762 โ }
763 โ const importKey = `${shareId}:${draftKey}`;
764 โ if (
765 โ startedShareImportKeyRef.current === importKey ||
766 โ cancellingShareImportKeyRef.current === importKey
767 โ ) {
768 โ return;
769 โ }
770 โ
771 โ if (!incomingShare) {
772 โ if (isIncomingShareUnavailable && alertedUnavailableIncomingShareIdRef.current !== shareId) {
773 โ alertedUnavailableIncomingShareIdRef.current = shareId;
774 โ Dialog.alert(
775 โ "Shared content unavailable",
776 โ "The shared content is no longer in the inbox. You can continue editing this task draft.",
777 โ );
778 โ }
779 โ return;
780 โ }
781 โ
782 โ if (
783 โ incomingShare.attachments.some((attachment) => attachment.type === "file") &&
784 โ selectedEnvironmentServerConfig === null
785 โ ) {
786 โ return;
787 โ }
788 โ
789 โ if (alertedUnavailableIncomingShareIdRef.current === shareId) {
790 โ alertedUnavailableIncomingShareIdRef.current = null;
791 โ }
792 โ startedShareImportKeyRef.current = importKey;
793 โ const draftBackup =
794 โ shareImportDraftBackupRef.current.get(importKey) ?? getComposerDraftSnapshot(draftKey);
795 โ shareImportDraftBackupRef.current.set(importKey, draftBackup);
796 โ const importToken = Symbol(importKey);
797 โ let didReserveShare = false;
798 โ let didConsumeShare = false;
799 โ let needsDraftRestore = false;
800 โ activeShareImportTokenRef.current = importToken;
801 โ setImportingShareKey(importKey);
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
802 โ 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:721:5]
720 โ props.initialProjectRef,
721 โ props.incomingShareId,
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `props.incomingShareId`
722 โ 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:740:5]
739 โ loadedBranchesProjectKeyRef.current = projectKey;
740 โ flow.loadBranches();
ยท โโโฌโ
ยท โฐโโ Missing dependency `flow`
741 โ }, [flow.loadBranches, selectedProject]);
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Overly precise dependency `flow.loadBranches`, use `flow` instead
742 โ
โฐโโโโ
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:963:5]
962 โ flow.draftKey,
963 โ hasImportedIncomingShare,
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `hasImportedIncomingShare`
964 โ incomingShare,
965 โ isIncomingShareInboxLoading,
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `isIncomingShareInboxLoading`
966 โ isIncomingShareUnavailable,
967 โ props.incomingShareId,
968 โ props.initialProjectRef?.environmentId,
969 โ props.initialProjectRef?.projectId,
970 โ releaseShareReservation,
971 โ reserveShare,
972 โ selectedEnvironmentServerConfig,
973 โ selectedProject,
974 โ shareImportAttempt,
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Unnecessary dependency `shareImportAttempt`
975 โ ]);
โฐโโโโ
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(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/connection/ConnectionStatusDot.tsx:58:7]
53 โ function usePulseAnimation(pulse: boolean) {
54 โ const pulseProgress = useSharedValue(0);
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ `pulseProgress` originates here
55 โ
56 โ useEffect(() => {
57 โ if (pulse) {
58 โ pulseProgress.value = withRepeat(
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ `pulseProgress` cannot be modified
59 โ withTiming(1, {
โฐโโโโ
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(exhaustive-effect-dependencies): Found missing/extra effect dependencies
โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:707:7]
706 โ if (settingsSheetPresentation.isActive) {
707 โ settingsRoutePresentation.present(settingsRouteSession);
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ Missing dependency `settingsRoutePresentation`
708 โ }
709 โ }, [settingsRoutePresentation.present, settingsRouteSession, settingsSheetPresentation.isActive]);
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
ยท โฐโโ Overly precise dependency `settingsRoutePresentation.present`, use `settingsRoutePresentation` instead
710 โ
โฐโโโโ
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(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/ThreadComposer.tsx:302:5]
298 โ typeof props.style.borderRadius === "number" ? props.style.borderRadius : 0;
299 โ const animatedBorderRadius = useSharedValue(targetBorderRadius);
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ `animatedBorderRadius` originates here
300 โ const shouldAnimate = props.animateLayout !== false && Platform.OS !== "android";
301 โ useLayoutEffect(() => {
302 โ animatedBorderRadius.value = shouldAnimate
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ `animatedBorderRadius` cannot be modified
303 โ ? withTiming(targetBorderRadius, {
โฐโโโโ
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(purity): Cannot call impure function during render
โญโ[apps/web/src/components/sidebar/SidebarThreadRow.tsx:372:47]
371 โ const { open, onOpenChange, onSnooze, timestampFormat } = props;
372 โ const presets = open ? resolveSnoozePresets(new Date(), timestampFormat) : [];
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
373 โ return (
โฐโโโโ
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/components/sidebar/SidebarThreadRow.tsx:853:39]
852 โ if (snoozeGateClock.thread !== thread) {
853 โ setSnoozeGateClock({ thread, now: new Date().toISOString() });
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
854 โ }
โฐโโโโ
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/features/threads/thread-inspector-content-stack.tsx:60:5]
58 โ
59 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
60 โ setMountedModes((current) => {
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
61 โ if (current.has(props.mode)) {
โฐโโโโ
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/connection/ConnectionsNewRouteScreen.tsx:79:5]
76 โ
77 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
78 โ const { host, code } = parsePairingUrl(connectionPairingUrl);
79 โ setHostInput(host);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
80 โ setCodeInput(code);
โฐโโโโ
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/connection/ConnectionsNewRouteScreen.tsx:89:5]
82 โ
83 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
84 โ if (routePairingUrl.length === 0) {
85 โ return;
86 โ }
87 โ
88 โ const { host, code } = parsePairingUrl(routePairingUrl);
89 โ setHostInput(host);
ยท โโโโโโโฌโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
90 โ setCodeInput(code);
โฐโโโโ
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/connection/ConnectionsNewRouteScreen.tsx:95:7]
92 โ
93 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
94 โ if (pairingConnectionError) {
95 โ setIsSubmitting(false);
ยท โโโโโโโโฌโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
96 โ }
โฐโโโโ
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/ThreadRouteScreen.tsx:388:5]
386 โ
387 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
388 โ setInspectorSelection((current) => {
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
389 โ if (props.renderInspector === undefined) {
โฐโโโโ
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-unstable-nested-components): Do not define components during render.
โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:516:24]
515 โ const inspectorHeaderInset = Platform.OS === "ios" ? 0 : safeAreaInsets.top;
516 โ โญโโถ const GitInspector = () => (
517 โ โ <GitOverviewSheet
518 โ โ headerInset={inspectorHeaderInset}
519 โ โ presentation="inspector"
520 โ โ route={{ params: props.route.params }}
521 โ โ />
522 โ โฐโโถ );
523 โ const FilesInspector = () =>
โฐโโโโ
help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
โ react(no-unstable-nested-components): Do not define components during render.
โญโ[apps/mobile/src/features/threads/ThreadRouteScreen.tsx:523:26]
522 โ );
523 โ โญโโถ const FilesInspector = () =>
524 โ โ selectedThread !== null && selectedThreadCwd !== null ? (
525 โ โ <ThreadFileNavigatorPane
526 โ โ cwd={selectedThreadCwd}
527 โ โ environmentId={selectedThread.environmentId}
528 โ โ headerInset={inspectorHeaderInset}
529 โ โ projectName={selectedThreadProject?.title ?? "Files"}
530 โ โ selectedPath={null}
531 โ โ onSelectFile={handleSelectInspectorFile}
532 โ โ />
533 โ โฐโโถ ) : null;
534 โ const RouteInspector = () => props.renderInspector?.(inspectorHeaderInset);
โฐโโโโ
help: Move this component definition out of the parent component `ThreadRouteContent` and pass data as props.
โ 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/pullRequest/PullRequestListFilters.tsx:387:19]
386 โ onFilters,
387 โ authorOptions = [],
ยท โโ
388 โ labelOptions = [],
โฐโโโโ
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.
โ 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/pullRequest/PullRequestListFilters.tsx:388:18]
387 โ authorOptions = [],
388 โ labelOptions = [],
ยท โโ
389 โ host,
โฐโโโโ
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.
โ react(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:290:50]
289 โ return (
290 โ <ExistingThreadSettingsRouteContext.Provider value={value}>
ยท โโโโโโโโโโโโโ
291 โ {props.children}
โฐโโโโ
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(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:654:44]
653 โ return (
654 โ <ThreadSettingsSessionContext.Provider value={value}>
ยท โโโโโโโโโโโโโ
655 โ {props.children}
โฐโโโโ
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(jsx-no-constructed-context-values): The Context `value` prop should not be constructed.
โญโ[apps/mobile/src/features/threads/ThreadSettingsSheet.tsx:1462:55]
1461 โ return (
1462 โ <ThreadSettingsPickerPresentationContext.Provider value={presentation}>
ยท โโโโโโโโโโโโโโโโโโโโ
1463 โ <ThreadSettingsPickerStack.Navigator
โฐโโโโ
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(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/ThreadNavigationSidebar.tsx:282:5]
280 โ const [snoozeWakeTick, bumpSnoozeWakeTick] = useState(0);
281 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
282 โ setNow(new Date().toISOString());
ยท โโโโฌโโ
ยท โฐโโ Avoid calling setState() directly within an effect
283 โ const id = setInterval(() => setNow(new Date().toISOString()), 60_000);
โฐโโโโ
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/ThreadNavigationSidebar.tsx:362:25]
361 โ // range) the boundary string is identical and the chain would die.
362 โ }, [nextSnoozeWakeAt, snoozeWakeTick]);
ยท โโโโโโโโฌโโโโโโ
ยท โฐโโ Unnecessary dependency `snoozeWakeTick`
363 โ const listItems = ((): readonly SidebarListItem[] => {
โฐโโโโ
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/mobile/src/features/threads/ThreadNavigationSidebar.tsx:353:53]
352 โ if (Number.isNaN(wakeAtMs)) return;
353 โ const delayMs = Math.min(Math.max(0, wakeAtMs - Date.now()) + 50, 2_147_483_647);
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
354 โ const id = setTimeout(() => {
โฐโโโโ
help: `Date.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(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/use-worktree-setup.ts:30:40]
28 โ const snapshot = resolveWorktreeSetupSnapshot(input.threadId, query.data, live);
29 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
30 โ if (snapshot && snapshot !== live) setHeld({ key, snapshot });
ยท โโโโฌโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
31 โ }, [key, live, snapshot]);
โฐโโโโ
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-empty-pattern): Empty object binding pattern
โญโ[apps/server/src/provider/Drivers/CodexDriver.test.ts:418:14]
417 โ
418 โ for (const {} of ["direct", "wrapper"] as const) {
ยท โโ
419 โ }
โฐโโโโ
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
โญโ[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.
โ react(exhaustive-effect-dependencies): Found missing/extra effect dependencies
โญโ[apps/mobile/src/features/threads/NewTaskContextPickerScreens.tsx:282:7]
281 โ mountedRef.current = false;
282 โ flow.setBranchQuery("");
ยท โโโฌโ
ยท โฐโโ Missing dependency `flow`
283 โ };
284 โ }, [flow.setBranchQuery]);
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Overly precise dependency `flow.setBranchQuery`, use `flow` instead
285 โ
โฐโโโโ
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
โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
โญโ[packages/shared/src/composerContextLegacySend.ts:19:45]
18 โ const occurrences = collectComposerContextReferences(text);
19 โ for (const occurrence of [...occurrences].reverse()) {
ยท โโโโโโโ
20 โ const record = recordsById.get(occurrence.contextId);
โฐโโโโ
help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:496:5]
494 โ }, []);
495 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
496 โ setKeyboardStateSuspect(false);
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
497 โ }, [isKeyboardVisible, liveKeyboardHeight]);
โฐโโโโ
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/ThreadDetailScreen.tsx:850:7]
847 โ const [lastKnownKeyboardHeight, setLastKnownKeyboardHeight] = useState(0);
848 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
849 โ if (liveKeyboardHeight > 0 && liveKeyboardHeight !== lastKnownKeyboardHeight) {
850 โ setLastKnownKeyboardHeight(liveKeyboardHeight);
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
851 โ }
โฐโโโโ
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/ThreadDetailScreen.tsx:1095:5]
1093 โ
1094 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
1095 โ setAnchorMessageId(null);
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
1096 โ setSubmittedMessageId(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/features/threads/ThreadDetailScreen.tsx:497:7]
496 โ setKeyboardStateSuspect(false);
497 โ }, [isKeyboardVisible, liveKeyboardHeight]);
ยท โโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ
ยท โ โฐโโ Unnecessary dependency `liveKeyboardHeight`
ยท โฐโโ Unnecessary dependency `isKeyboardVisible`
498 โ const handleOwnedInputFocusChange = (focused: boolean) => {
โฐโโโโ
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/ThreadDetailScreen.tsx:1043:7]
1042 โ userInputInsetProgress.set(1);
1043 โ }, [activeUserInputRequestId, userInputCardProgress, userInputInsetProgress]);
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `activeUserInputRequestId`
1044 โ const showContent = props.showContent ?? true;
โฐโโโโ
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/ThreadDetailScreen.tsx:1101:15]
1100 โ freeze.set(false);
1101 โ }, [freeze, selectedThreadKey]);
ยท โโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Unnecessary dependency `selectedThreadKey`
1102 โ
โฐโโโโ
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(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/ThreadDetailScreen.tsx:931:5]
926 โ const composerPopoverHeight = useSharedValue(0);
927 โ const floatingControlCoverage = useSharedValue(
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ `floatingControlCoverage` originates here
928 โ showFloatingStatus ? FLOATING_WORKING_CONTROL_COVERAGE : 0,
929 โ );
930 โ useEffect(() => {
931 โ floatingControlCoverage.value = withTiming(
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ `floatingControlCoverage` cannot be modified
932 โ 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:949:7]
939 โ const userInputCoverageApplies = Platform.OS === "ios" && activeUserInputRequestId !== null;
940 โ const combinedContentInsetEndAdjustment = useSharedValue(
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
ยท โฐโโ `combinedContentInsetEndAdjustment` originates here
941 โ Math.max(0, estimatedOverlayHeight - nativeInsetOvercount),
942 โ );
943 โ useAnimatedReaction(
944 โ () =>
945 โ contentInsetEndAdjustment.value +
946 โ floatingControlCoverage.value +
947 โ (userInputCoverageApplies ? userInputInsetProgress.value * userInputCardCoverage.value : 0),
948 โ (value) => {
949 โ combinedContentInsetEndAdjustment.value = value;
ยท โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
ยท โฐโโ `combinedContentInsetEndAdjustment` cannot be modified
950 โ },
โฐโโโโ
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
โ 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.
โญโ[packages/shared/src/atomicWrite.test.ts:139:5]
138 โ Effect.gen(function* () {
139 โ โญโโถ while (fiber.pollUnsafe() === undefined) {
140 โ โ yield* TestClock.adjust("100 millis");
141 โ โ // oxlint-disable-next-line t3code/no-real-time-wait-in-tests -- a macrotask boundary so the real stat I/O can finish; time moves only via TestClock
142 โ โ yield* Effect.promise(() => new Promise((resolve) => setImmediate(resolve)));
143 โ โฐโโถ }
144 โ return yield* Fiber.join(fiber);
โฐโโโโ
โ 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-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/mobile/src/features/agent-awareness/remoteRegistration.test.ts:223:5]
222 โ let idlePasses = 0;
223 โ โญโโถ for (;;) {
224 โ โ yield* Effect.promise(() => Promise.resolve());
225 โ โ const pending = backgroundRuntime.pending.shift();
226 โ โ if (!pending) {
227 โ โ idlePasses++;
228 โ โ if (idlePasses >= 3) {
229 โ โ return;
230 โ โ }
231 โ โ continue;
232 โ โ }
233 โ โ idlePasses = 0;
234 โ โ const exit = yield* Effect.exit(
235 โ โ pending.operation as Effect.Effect<unknown, unknown, ManagedRelay.ManagedRelayClient>,
236 โ โ );
237 โ โ yield* Effect.sync(() => {
238 โ โ pending.resolve(exit);
239 โ โ });
240 โ โฐโโถ }
241 โ },
โฐโโโโ
โ react(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/web/src/components/pullRequest/PullRequestSummaryTab.tsx:814:17]
813 โ <div
814 โ key={`${index}:${check.name}:${check.url ?? ""}`}
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
815 โ className="group flex items-center gap-2 rounded-md pr-1 hover:bg-accent/60"
โฐโโโโ
help: Use a unique data-dependent key to avoid unnecessary rerenders
โ 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): Parameter 'stopSessions' is declared but never used. Unused parameters should start with a '_'.
โญโ[apps/server/src/provider/AntigravityAuth.ts:285:20]
284 โ },
285 โ (effect, flow, stopSessions) =>
ยท โโโโโโโฌโโโโโ
ยท โฐโโ 'stopSessions' is declared here
286 โ effect.pipe(
โฐโโโโ
help: Consider removing this parameter.
โ react(exhaustive-effect-dependencies): Found extra effect dependencies
โญโ[apps/mobile/src/state/use-thread-outbox-drain.ts:1315:5]
1314 โ queuedMessagesByThreadKey,
1315 โ retryTick,
ยท โโโโโฌโโโโ
ยท โฐโโ Unnecessary dependency `retryTick`
1316 โ 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
โ eslint(no-unneeded-ternary): Unnecessary use of boolean literals in conditional expression
โญโ[packages/shared/src/serverSettings.test.ts:35:7]
34 โ const fallback = fallbackTextGenerationModelSelection(providerInstances, (instanceId) =>
35 โ instanceId === configured ? true : false,
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
36 โ );
โฐโโโโ
help: Remove this ternary operator
โ 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:1043:32]
1042 โ expect(error._tag).toBe("AssetGitHubMediaUrlValidationError");
1043 โ const encoded = yield* Schema.encodeEffect(Schema.fromJsonString(AssetAccessError))(error);
ยท โโโโโโโโโโโโโโโโโโโ
1044 โ expect(encoded).not.toContain(url);
โฐโโโโ
โ 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.
โ react(set-state-in-effect): Calling setState synchronously within an effect can trigger cascading renders
โญโ[apps/mobile/src/features/pull-requests/PullRequestRouteScreen.tsx:335:7]
330 โ };
331 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
332 โ if (!guidesEnabled && section === "guide") {
333 โ requestedSection.current = "overview";
334 โ currentScrollOffset.current = scrollOffsets.current.overview ?? -insets.top;
335 โ setSection("overview");
ยท โโโโโโฌโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
336 โ }
โฐโโโโ
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:337:6]
332 โ if (!guidesEnabled && section === "guide") {
333 โ 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
334 โ 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
335 โ setSection("overview");
336 โ }
337 โ }, [guidesEnabled, section, insets.top]);
ยท โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
338 โ 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:873:6]
856 โ if (
857 โ 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
858 โ lastSelection.current.id === route.params.fileSelectionId
859 โ )
860 โ return;
861 โ lastSelection.current = { path: route.params.path, id: route.params.fileSelectionId };
862 โ if (route.params.focus) navigation.setParams({ focus: undefined });
863 โ setJumpPath(route.params.path);
864 โ setSelectedRowId(null);
865 โ jumpStarted.current = false;
866 โ const file = data.files.find((entry) => entry.path === route.params.path);
867 โ 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
868 โ setCollapsedIds((ids) => ids.filter((id) => id !== file.id));
869 โ jumpStarted.current = true;
870 โ void nativeView.current.scrollToFile(file.id, false).catch(() => {
871 โ jumpStarted.current = false;
872 โ });
873 โ }, [route.params.path, route.params.fileSelectionId, route.params.focus, data.files, navigation]);
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
874 โ 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
โ 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
โ unicorn(no-useless-fallback-in-spread): Empty fallbacks in spreads are unnecessary
โญโ[packages/shared/src/serverSettings.ts:343:9]
342 โ const entry: ProjectSettingsOverrides = {
343 โ ...(entries.get(projectId) ?? currentEntries[projectId] ?? {}),
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
344 โ };
โฐโโโโ
help: Spreading falsy values in object literals won't add any unexpected properties, so it's unnecessary to add an empty object as fallback.
โ oxc(no-accumulating-spread): Do not spread accumulators in Array.prototype.reduce()
โญโ[packages/shared/src/serverSettings.ts:429:24]
428 โ const favorites =
429 โ setModelFavorites?.reduce((current, change) => {
ยท โโโโฌโโ
ยท โฐโโ For this reduce
430 โ const exists = current.some(
431 โ (favorite) => favorite.provider === change.provider && favorite.model === change.model,
432 โ );
433 โ return change.favorite
434 โ ? exists
435 โ ? current
436 โ : [...current, { provider: change.provider, model: change.model }]
ยท โโโโโโฌโโโโ
ยท โฐโโ From this spread
437 โ : current.filter(
โฐโโโโ
help: Consider using `Object.assign()` or `Array.prototype.push()` to mutate the accumulator instead.
note: Using spreads within accumulators leads to `O(n^2)` time complexity.
โ oxc(no-accumulating-spread): Do not spread accumulators in loops
โญโ[packages/shared/src/serverSettings.ts:447:3]
445 โ null;
446 โ let nextModelPreferences = initialModelPreferences;
ยท โโโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ From this accumulator
447 โ for (const change of setModelsHidden ?? []) {
ยท โโฌโ
ยท โฐโโ For this loop
448 โ const preferences = nextModelPreferences?.[change.provider] ?? {
449 โ hiddenModels: [],
450 โ modelOrder: [],
451 โ };
452 โ const hiddenModels = preferences.hiddenModels.filter((model) => model !== change.model);
453 โ if (change.hidden) hiddenModels.push(change.model);
454 โ nextModelPreferences = {
455 โ ...nextModelPreferences,
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ From this spread
456 โ [change.provider]: { ...preferences, hiddenModels },
โฐโโโโ
help: Consider using `Object.assign()` to mutate the accumulator instead.
note: Using spreads within accumulators leads to `O(n^2)` time complexity.
โ 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:236:17]
235 โ const requiredScopesForSettingsUpdate = (payload: unknown) => {
236 โ const input = Schema.decodeUnknownSync(SettingsUpdate)(payload);
ยท โโโโโโโโโโโโโโโโโโโโโโโโ
237 โ 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:255:26]
254 โ if (method === WS_METHODS.assetsCreateUrl) {
255 โ const { resource } = Schema.decodeUnknownSync(AssetCreateUrlInput)(payload);
ยท โโโโโโโโโโโโโโโโโโโโโโโโ
256 โ return [
โฐโโโโ
โ eslint(no-unused-vars): Identifier 'Image' is imported but never used.
โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:17:10]
16 โ import type { NativeSyntheticEvent, ViewProps } from "react-native";
17 โ import { Image, Platform, StyleSheet } from "react-native";
ยท โโโฌโโ
ยท โฐโโ 'Image' is imported here
18 โ
โฐโโโโ
help: Consider removing this import.
โ react(exhaustive-effect-dependencies): Found missing effect dependencies
โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:227:6]
223 โ nativeEventSnapshotsRef.current = pruneAcknowledgedComposerNativeEvents(
224 โ nativeEventSnapshotsRef.current,
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
225 โ mostRecentEventCount,
226 โ );
227 โ }, [acknowledgesLatestNativeEvent, mostRecentEventCount]);
ยท โโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
228 โ const assumedValue = props.value;
โฐโโโโ
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/extra effect dependencies
โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:235:7]
234 โ nativeEventSnapshotsRef.current = assumeComposerControlledState(
235 โ nativeEventSnapshotsRef.current,
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
236 โ controlledEventCount,
237 โ assumedValue,
238 โ );
239 โ }, [assumedValue, controlledEventCount, isNativeEcho, controlledDocumentJson]);
ยท โโโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `controlledDocumentJson`
240 โ const acceptNativeEvent = useCallback(
โฐโโโโ
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/native/T3ComposerEditor.native.tsx:160:29]
159 โ const tokens = collectComposerInlineTokens(props.value, {
160 โ preserveTrailingFrom: confirmedTokensRef.current,
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ Cannot access ref value during render
161 โ });
โฐโโโโ
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/native/T3ComposerEditor.native.tsx:160:29]
159 โ const tokens = collectComposerInlineTokens(props.value, {
160 โ preserveTrailingFrom: confirmedTokensRef.current,
ยท โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
161 โ });
โฐโโโโ
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/native/T3ComposerEditor.native.tsx:162:23]
161 โ });
162 โ confirmedTokensRef.current = tokens;
ยท โโโโโโโโโโฌโโโโโโโโโโโโโฌโโโ
ยท โ โฐโโ Cannot update ref value during render
ยท โฐโโ This value is a ref
163 โ return JSON.stringify(
โฐโโโโ
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/native/T3ComposerEditor.native.tsx:204:5]
203 โ mostRecentEventCount,
204 โ nativeEventSnapshotsRef.current,
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
205 โ );
โฐโโโโ
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/native/T3ComposerEditor.native.tsx:210:5]
209 โ mostRecentEventCount,
210 โ nativeEventSnapshotsRef.current,
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ Passing a ref to a function may read its value during render
211 โ );
โฐโโโโ
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 memoization dependencies
โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:195:6]
159 โ const tokens = collectComposerInlineTokens(props.value, {
160 โ preserveTrailingFrom: confirmedTokensRef.current,
ยท โโโโโโโโโโฌโโโโโโโโ
ยท โฐโโ Missing dependency `confirmedTokensRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
161 โ });
162 โ confirmedTokensRef.current = tokens;
163 โ return JSON.stringify(
164 โ composerContextEditorTokens(props.value, tokens, skillLabels).map((token) => {
165 โ const record =
166 โ token.type === "context"
167 โ ? props.context?.records.find((record) => record.contextId === token.contextId)
168 โ : undefined;
169 โ const presentation = contextChipPresentation(
170 โ token.type === "context" ? token.kind : token.type,
171 โ record,
172 โ );
173 โ const icon = contextChipIcon(
174 โ presentation,
175 โ token.type === "mention" ? token.value : contextRecordFileName(record),
176 โ );
177 โ return {
178 โ type: token.type,
179 โ source: token.source,
180 โ start: token.start,
181 โ end: token.end,
182 โ accent: presentation.accent,
183 โ label:
184 โ token.type === "skill"
185 โ ? (skillLabels.get(token.value) ?? token.value)
186 โ : token.type === "context"
187 โ ? `${token.label}${props.context?.records.some((record) => record.contextId === token.contextId) ? "" : " ยท unavailable"}`
188 โ : basename(token.value),
189 โ detail: token.type === "context" ? composerChipSizeSuffix(record) : "",
190 โ iconUri: contextChipIconUri(icon),
191 โ tintsIcon: icon.kind === "chip",
192 โ };
193 โ }),
194 โ );
195 โ }, [props.value, props.context, skillLabels]);
ยท โโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
ยท โฐโโ This dependency list is missing values used by the callback
196 โ // Every render resolves against the snapshot history, so a render whose
โฐโโโโ
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(memo-dependencies): Found missing memoization dependencies
โญโ[apps/mobile/src/native/T3ComposerEditor.native.tsx:257:5]
249 โ mostRecentEventCountRef.current = acknowledgedEventCount;
250 โ nativeEventSnapshotsRef.current.push({
ยท โโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ Missing dependency `nativeEventSnapshotsRef`. Refs, setState functions, and other "stable" values generally do not need to be added as dependencies, but this variable may change over time to point to different values
251 โ eventCount: acknowledgedEventCount,
252 โ value,
253 โ selection: nextSelection,
254 โ });
255 โ return acknowledgedEventCount;
256 โ },
257 โ [],
ยท โโฌ
ยท โฐโโ This dependency list is missing values used by the callback
258 โ );
โฐโโโโ
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
โ eslint(no-unused-vars): Identifier 'identity' is imported but never used.
โญโ[apps/server/src/auth/http.ts:28:10]
27 โ import * as Schema from "effect/Schema";
28 โ import { identity } from "effect/Function";
ยท โโโโโฌโโโ
ยท โฐโโ 'identity' is imported here
29 โ import * as Layer from "effect/Layer";
โฐโโโโ
help: Consider removing this import.
โ typescript(no-this-alias): Unexpected aliasing of 'this' to local variable.
โญโ[apps/web/src/contextMenuFallback.test.ts:38:9]
37 โ get isConnected() {
38 โ let current: FakeElement | null = this;
ยท โโโโโโโ
39 โ while (current?.parent) {
โฐโโโโ
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.
โ eslint(no-unused-vars): Parameter '_' is declared but never used.
โญโ[packages/shared/src/qrCode.ts:458:44]
457 โ ): Array<byte> {
458 โ let result: Array<byte> = divisor.map((_) => 0);
ยท โฌ
ยท โฐโโ '_' is declared here
459 โ for (const b of data) {
โฐโโโโ
help: Consider removing this parameter.
โ eslint(no-unused-vars): Function 'summarizePayload' is declared but never used.
โญโ[packages/provider-acp/src/server/nativeLogging.ts:22:10]
21 โ
22 โ function summarizePayload(payload: unknown): Readonly<Record<string, unknown>> {
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ 'summarizePayload' is declared here
23 โ if (payload === null) return { valueType: "null" };
โฐโโโโ
help: Consider removing this declaration.
โ 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
โ t3code(no-inline-schema-compile): Hoist Schema.is(...) to module scope: both the inline schema literal and the compiled function are rebuilt on every call. Move the compiled function to a module-level const.
โญโ[apps/server/src/provider/acp/AntigravityProtocol.ts:263:20]
262 โ ...(update._meta !== undefined
263 โ ? { _meta: Schema.is(Schema.Record(Schema.String, Schema.Json))(meta) ? meta : null }
ยท โโโโโโโโโ
264 โ : {}),
โฐโโโโ
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/PendingUserInputCard.tsx:100:7]
86 โ
87 โ const cardCoverage = props.cardCoverage;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `cardCoverage` originates here
88 โ const barHeightRef = useRef(0);
89 โ const cardHeightRef = useRef(0);
90 โ const cardHeight = useSharedValue(0);
91 โ const notifyCoverage = useCallback(() => {
92 โ if (!cardCoverage) {
93 โ return;
94 โ }
95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
96 โ if (coverage === cardCoverage.value) {
97 โ return;
98 โ }
99 โ if (cardCoverage.value === 0) {
100 โ cardCoverage.value = coverage;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ `cardCoverage` cannot be modified
101 โ return;
โฐโโโโ
help: Do not mutate component props or hook arguments. If the value should change, update it where it is owned and pass an update callback, or use local state
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/PendingUserInputCard.tsx:118:7]
89 โ const cardHeightRef = useRef(0);
90 โ const cardHeight = useSharedValue(0);
ยท โโโโโโฌโโโโ
ยท โฐโโ `cardHeight` originates here
91 โ const notifyCoverage = useCallback(() => {
92 โ if (!cardCoverage) {
93 โ return;
94 โ }
95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
96 โ if (coverage === cardCoverage.value) {
97 โ return;
98 โ }
99 โ if (cardCoverage.value === 0) {
100 โ cardCoverage.value = coverage;
101 โ return;
102 โ }
103 โ cardCoverage.value = withTiming(coverage, {
104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
105 โ easing: Easing.out(Easing.cubic),
106 โ });
107 โ }, [cardCoverage]);
108 โ const handleBarLayout = useCallback(
109 โ (event: LayoutChangeEvent) => {
110 โ barHeightRef.current = event.nativeEvent.layout.height;
111 โ notifyCoverage();
112 โ },
113 โ [notifyCoverage],
114 โ );
115 โ const handleCardLayout = useCallback(
116 โ (event: LayoutChangeEvent) => {
117 โ cardHeightRef.current = event.nativeEvent.layout.height;
118 โ cardHeight.value = event.nativeEvent.layout.height;
ยท โโโโโโฌโโโโ
ยท โฐโโ `cardHeight` cannot be modified
119 โ notifyCoverage();
โฐโโโโ
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/PendingUserInputCard.tsx:100:7]
90 โ const cardHeight = useSharedValue(0);
91 โ const notifyCoverage = useCallback(() => {
ยท โโโโฌโโโ
ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
92 โ if (!cardCoverage) {
93 โ return;
94 โ }
95 โ const coverage = Math.max(0, cardHeightRef.current - barHeightRef.current);
96 โ if (coverage === cardCoverage.value) {
97 โ return;
98 โ }
99 โ if (cardCoverage.value === 0) {
100 โ cardCoverage.value = coverage;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ This modifies `cardCoverage`
101 โ return;
โฐโโโโ
help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
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/PendingUserInputCard.tsx:100:7]
99 โ if (cardCoverage.value === 0) {
100 โ cardCoverage.value = coverage;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ This modifies `cardCoverage`
101 โ return;
102 โ }
103 โ cardCoverage.value = withTiming(coverage, {
104 โ duration: USER_INPUT_TOGGLE_DURATION_MS,
105 โ easing: Easing.out(Easing.cubic),
106 โ });
107 โ }, [cardCoverage]);
108 โ const handleBarLayout = useCallback(
109 โ (event: LayoutChangeEvent) => {
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ This function may (indirectly) reassign or modify `cardCoverage` after render
110 โ barHeightRef.current = event.nativeEvent.layout.height;
โฐโโโโ
help: This argument is a function which may reassign or mutate `cardCoverage` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
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/PendingUserInputCard.tsx:118:7]
115 โ const handleCardLayout = useCallback(
116 โ (event: LayoutChangeEvent) => {
ยท โโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
ยท โฐโโ This function may (indirectly) reassign or modify `cardHeight` after render
117 โ cardHeightRef.current = event.nativeEvent.layout.height;
118 โ cardHeight.value = event.nativeEvent.layout.height;
ยท โโโโโโฌโโโโ
ยท โฐโโ This modifies `cardHeight`
119 โ notifyCoverage();
โฐโโโโ
help: This argument is a function which may reassign or mutate `cardHeight` after render, which can cause inconsistent behavior on subsequent renders. Consider using state instead
note: React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
โ 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(capitalized-calls): Capitalized function called without JSX
โญโ[apps/mobile/src/features/threads/ThreadQueueControl.tsx:602:27]
601 โ const onEnd = useEffectEvent((y: number, success: boolean) => props.onEnd(y, success));
602 โ const gesture = Gesture.Pan()
ยท โโฌโ
ยท โฐโโ `Pan` may be a component
603 โ .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
โ eslint(no-unused-vars): Type 'Scope' is imported but never used.
โญโ[apps/server/src/provider/ProviderAuthService.ts:15:18]
14 โ import * as Layer from "effect/Layer";
15 โ import type * as Scope from "effect/Scope";
ยท โโโฌโโ
ยท โฐโโ 'Scope' is imported here
16 โ import * as Stream from "effect/Stream";
โฐโโโโ
help: Consider removing this import.
โ 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-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.
โ 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(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
โ 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:2374:7]
2373 โ let orphanedAt: number | undefined;
2374 โ โญโโถ for (let interruptAt = 1; interruptAt <= 31; interruptAt += 1) {
2375 โ โ const tasks: Array<() => void> = [];
2376 โ โ const dispatcher: Scheduler.SchedulerDispatcher = {
2377 โ โ scheduleTask: (task) => tasks.push(task),
2378 โ โ flush: () => {
2379 โ โ let task: (() => void) | undefined;
2380 โ โ while ((task = tasks.shift()) !== undefined) task();
2381 โ โ },
2382 โ โ };
2383 โ โ
2384 โ โ let requestFiber: Fiber.Fiber<unknown, unknown> | undefined;
2385 โ โ let requestChecks = 0;
2386 โ โ const scheduler: Scheduler.Scheduler = {
2387 โ โ executionMode: "async",
2388 โ โ makeDispatcher: () => dispatcher,
2389 โ โ shouldYield: (fiber) => {
2390 โ โ if (fiber !== requestFiber) return false;
2391 โ โ requestChecks += 1;
2392 โ โ if (requestChecks !== interruptAt) return false;
2393 โ โ fiber.interruptUnsafe();
2394 โ โ return true;
2395 โ โ },
2396 โ โ };
2397 โ โ
2398 โ โ const input: UsageSummaryInput = {
2399 โ โ ...WINDOW,
2400 โ โ sinceDay: UsageDay.make("2026-09-01"),
2401 โ โ untilDay: UsageDay.make(`2026-08-${String(interruptAt).padStart(2, "0")}`),
2402 โ โ };
2403 โ โ const first = yield* service
2404 โ โ .readSummary(input)
2405 โ โ .pipe(
2406 โ โ Effect.exit,
2407 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2408 โ โ Effect.forkChild,
2409 โ โ );
2410 โ โ requestFiber = first;
2411 โ โ yield* Effect.yieldNow;
2412 โ โ dispatcher.flush();
2413 โ โ
2414 โ โ const second = yield* service.readSummary(input).pipe(
2415 โ โ Effect.match({
2416 โ โ onFailure: (error) => error.reason,
2417 โ โ onSuccess: () => "success" as const,
2418 โ โ }),
2419 โ โ Effect.provideService(Scheduler.Scheduler, scheduler),
2420 โ โ Effect.forkChild,
2421 โ โ );
2422 โ โ yield* Effect.yieldNow;
2423 โ โ dispatcher.flush();
2424 โ โ const secondExit = second.pollUnsafe();
2425 โ โ if (secondExit === undefined) {
2426 โ โ second.interruptUnsafe();
2427 โ โ orphanedAt = interruptAt;
2428 โ โ break;
2429 โ โ }
2430 โ โ if (Exit.isFailure(secondExit)) {
2431 โ โ assert.fail("the matching request fiber was interrupted");
2432 โ โ }
2433 โ โ assert.strictEqual(secondExit.value, "invalidWindow");
2434 โ โฐโโถ }
2435 โ
โฐโโโโ
โ 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");
โฐโโโโ
โ 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:1718:32]
1717 โ const model = createModelSelection(ProviderInstanceId.make("codex"), "gpt-5.5");
1718 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
ยท โโโโโโโโโโโโโโโโโโโ
1719 โ 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:1719:34]
1718 โ const modelJson = yield* Schema.encodeEffect(Schema.fromJsonString(ModelSelection))(model);
1719 โ const scriptsJson = yield* Schema.encodeEffect(
ยท โโโโโโโโโโโโโโโโโโโ
1720 โ Schema.fromJsonString(Schema.Array(ProjectScript)),
โฐโโโโ
โ 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
โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/ThreadPullRequestService.ts:408:7]
407 โ
408 โ const layer = Layer.effect(ThreadPullRequestServiceV2, make);
ยท โโโฌโโ
ยท โฐโโ 'layer' is declared here
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Identifier 'HostProcess' is imported but never used.
โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:25:13]
24 โ import * as Schema from "effect/Schema";
25 โ import * as HostProcess from "@t3tools/shared/HostProcess";
ยท โโโโโโฌโโโโโ
ยท โฐโโ 'HostProcess' is imported here
26 โ
โฐโโโโ
help: Consider removing this import.
โ eslint(no-unused-vars): Variable 'serverConfig' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:124:11]
123 โ const path = yield* Path.Path;
124 โ const serverConfig = yield* ServerConfig.ServerConfig;
ยท โโโโโโโฌโโโโโ
ยท โฐโโ 'serverConfig' is declared here
125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Variable 'serverSettings' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/ProviderTurnStartService.ts:125:11]
124 โ const serverConfig = yield* ServerConfig.ServerConfig;
125 โ const serverSettings = yield* ServerSettings.ServerSettingsService;
ยท โโโโโโโโฌโโโโโโ
ยท โฐโโ 'serverSettings' is declared here
126 โ const gitWorkflow = yield* GitWorkflowService.GitWorkflowService;
โฐโโโโ
help: Consider removing this declaration.
โ react(immutability): This value cannot be modified
โญโ[apps/mobile/src/features/threads/thread-work-log.tsx:174:5]
170 โ const expandedAngle = props.collapsedDirection === "right" ? 90 : 180;
171 โ const rotation = useSharedValue(props.expanded ? expandedAngle : 0);
ยท โโโโโฌโโโ
ยท โฐโโ `rotation` originates here
172 โ
173 โ useLayoutEffect(() => {
174 โ rotation.value = withTiming(props.expanded ? expandedAngle : 0, {
ยท โโโโโฌโโโ
ยท โฐโโ `rotation` cannot be modified
175 โ duration: THREAD_DISCLOSURE_TRANSITION_MS,
โฐโโโโ
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(no-array-index-key): Usage of Array index in keys is not allowed
โญโ[apps/mobile/src/features/threads/thread-work-log.tsx:1252:23]
1251 โ <Text
1252 โ key={`${index}:${line}`}
ยท โโโโโโโโโโโโโโโโโโโโโโโโ
1253 โ selectable
โฐโโโโ
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/features/showcase/ShowcaseCaptureCoordinator.tsx:118:7]
113 โ
114 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
115 โ if (orientationSettled) return;
116 โ const orientation = getNativeShowcaseOrientation();
117 โ if (orientation === null) {
118 โ setOrientationSettled(true);
ยท โโโโโโโโโโโฌโโโโโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
119 โ 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/showcase/ShowcaseCaptureCoordinator.tsx:317:7]
305 โ
306 โ useEffect(() => {
ยท โโโโโฌโโโโ
ยท โฐโโ This is the containing effect
307 โ if (
308 โ scene === null ||
309 โ requestedScene === null ||
310 โ scene !== requestedScene ||
311 โ !hasFixture ||
312 โ !orientationSettled ||
313 โ !themeApplied ||
314 โ (scene === "agent-activity" && !agentActivityStaged) ||
315 โ !isShowcaseNativeContentReady({ scene, themeId, renderSignal })
316 โ ) {
317 โ setReadyScene(null);
ยท โโโโโโโฌโโโโโโ
ยท โฐโโ Avoid calling setState() directly within an effect
318 โ 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
โ eslint(no-unused-vars): Variable 'lastOutcome' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx:123:9]
122 โ let cancelled = false;
123 โ let lastOutcome: string | null = null;
ยท โโโโโโฌโโโโโ
ยท โฐโโ 'lastOutcome' is declared here
124 โ void retryShowcaseOperation(async () => applyNativeShowcaseOrientation(orientation), {
โฐโโโโ
help: Consider removing this declaration.
โ 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): Identifier 'Fiber' is imported but never used.
โญโ[apps/server/src/ws.ts:9:13]
8 โ import * as Effect from "effect/Effect";
9 โ import * as Fiber from "effect/Fiber";
ยท โโโฌโโ
ยท โฐโโ 'Fiber' is imported here
10 โ import * as FileSystem from "effect/FileSystem";
โฐโโโโ
help: Consider removing this import.
โ eslint(no-unused-vars): Identifier 'Schedule' is imported but never used.
โญโ[apps/server/src/ws.ts:16:13]
15 โ import * as Ref from "effect/Ref";
16 โ import * as Schedule from "effect/Schedule";
ยท โโโโโฌโโโ
ยท โฐโโ 'Schedule' is imported here
17 โ import * as Schema from "effect/Schema";
โฐโโโโ
help: Consider removing this import.
โ eslint(no-unused-vars): Variable 'projectSetupScriptRunner' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/ws.ts:1251:13]
1250 โ const usageLimitSources = yield* UsageLimitSources.UsageLimitSources;
1251 โ const projectSetupScriptRunner = yield* ProjectSetupScriptRunner.ProjectSetupScriptRunner;
ยท โโโโโโโโโโโโโฌโโโโโโโโโโโ
ยท โฐโโ 'projectSetupScriptRunner' is declared here
1252 โ const worktreeSetupTracker = yield* WorktreeSetupTracker.WorktreeSetupTracker;
โฐโโโโ
help: Consider removing this declaration.
โ eslint(no-unused-vars): Variable 'layer' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/serverRuntimeStartup.ts:728:7]
727 โ
728 โ const layer = layerWithOptions();
ยท โโโฌโโ
ยท โฐโโ 'layer' 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/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
โ react(memo-dependencies): Found extra memoization dependencies
โญโ[apps/mobile/src/features/keyboard/HardwareKeyboardCommandProvider.tsx:116:34]
115 โ return [...commands];
116 โ }, [activeThreadRef, pathname, registrationVersion, navigation]);
ยท โโโโโโโโโโฌโโโโโโโโโ
ยท โฐโโ Unnecessary dependency `registrationVersion`
117 โ
โฐโโโโ
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-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.
โ 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
โ 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
โ react(purity): Cannot call impure function during render
โญโ[apps/web/src/components/CommandPalette.tsx:1996:20]
1995 โ title: inferProjectTitleFromPath(destinationPath),
1996 โ createdAt: new Date().toISOString(),
ยท โโโโโโฌโโโโ
ยท โฐโโ Cannot call impure function
1997 โ 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
โ 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.
โ 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-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.
โ 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): 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.
โ 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
โ eslint(no-unused-vars): Variable 'layerDaemon' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/EffectWorker.ts:911:7]
910 โ
911 โ const layerDaemon: Layer.Layer<never, never, OrchestrationEffectWorkerV2> = Layer.effectDiscard(
ยท โโโโโโฌโโโโโ
ยท โฐโโ 'layerDaemon' is declared here
912 โ runDaemon.pipe(Effect.forkScoped),
โฐโโโโ
help: Consider removing this declaration.
โ 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 โ });
โฐโโโโ
โ 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()),
โฐโโโโ
โ 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
โ eslint(no-unused-vars): Variable 'layerUnavailable' is declared but never used. Unused variables should start with a '_'.
โญโ[apps/server/src/orchestration-v2/Orchestrator.ts:12232:7]
12231 โ
12232 โ const layerUnavailable: Layer.Layer<OrchestratorV2> = Layer.succeed(
ยท โโโโโโโโโฌโโโโโโโ
ยท โฐโโ 'layerUnavailable' is declared here
12233 โ OrchestratorV2,
โฐโโโโ
help: Consider removing this declaration.
โ 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({
โฐโโโโ
โ 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 โ import { detectSourceControlProviderFromRemoteUrl } from "@t3tools/shared/sourceControl";
โฐโโโโ
help: Remove empty braces
โ 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),
โฐโโโโ
โ 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);
โฐโโโโ
โ eslint(no-empty-pattern): Empty array binding pattern
โญโ[apps/server/src/pullRequest/PullRequestService.test.ts:1429:12]
1428 โ
1429 โ for (const [] of [
ยท โโ
1430 โ ["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.
โ 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.
โ 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.
โ unicorn(prefer-set-has): should be a `Set`, and use `.has()` to check existence or non-existence.
โญโ[apps/web/src/components/chat/useComposerSend.ts:978:13]
977 โ const changedBeforeDecline = draftChangedSinceSend();
978 โ โญโโถ const pendingIdsBeforeDecline = pendingApprovalsRef.current.map(
979 โ โ (approval) => approval.requestId,
980 โ โฐโโถ );
981 โ const approvalResponding = approvalsToDecline.some((approval) =>
โฐโโโโ
help: Switch to `Set`
โ 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(capitalized-calls): Capitalized function called without JSX
โญโ[apps/mobile/src/lib/useHoverGesture.ts:8:15]
7 โ () =>
8 โ Gesture.Hover()
ยท โโโฌโโ
ยท โฐโโ `Hover` may be a component
9 โ .manualActivation(true)
โฐโโโโ
help: Render `Hover` with JSX if it is a component; otherwise rename it to start with a lowercase letter or allowlist it in the compiler configuration
note: `Hover` is treated as a component because it begins with an uppercase letter; React Compiler skipped optimizing this component or hook. Additional guidance: https://react.dev/reference/eslint-plugin-react-hooks/lints/static-components
โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
โญโ[apps/mobile/src/lib/markdownDocument.ts:138:28]
137 โ visit(parser.parse(markdown));
138 โ for (const edit of edits.reverse())
ยท โโโโโโโ
139 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
โฐโโโโ
help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
โญโ[apps/mobile/src/lib/markdownDocument.ts:169:28]
168 โ visit(parser.parse(markdown));
169 โ for (const edit of edits.reverse())
ยท โโโโโโโ
170 โ markdown = markdown.slice(0, edit.start) + edit.content + markdown.slice(edit.end);
โฐโโโโ
help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
โ unicorn(no-array-reverse): Use `Array#toReversed()` instead of `Array#reverse()`.
โญโ[apps/mobile/src/lib/markdownDocument.ts:223:38]
222 โ visit(parser.parse(markdown));
223 โ for (const lineStart of lineStarts.reverse()) {
ยท โโโโโโโ
224 โ // The header row may be a lazy line without its container markers (`>` or list indent),
โฐโโโโ
help: `Array#reverse()` mutates the original array. Use `Array#toReversed()` to return a new reversed array without modifying the original.
Found 0 errors and 357 warnings in 5384 files (9.7s, 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=__76a3e230-a8ea-4336-a735-8e15fcf83273.__actions_cache_2]
Post job cleanup.
Cache hit occurred on the primary key pnpm-full-v1-Linux-X64-d651407d7d0c7ecacd035718e6d120760bb0bb1ea0b966bcda4a8197c80ebc8f, not saving cache.
##[end-action id=__76a3e230-a8ea-4336-a735-8e15fcf83273.__actions_cache_2;outcome=success;conclusion=success;duration_ms=149]
##[start-action display=Setup Vite+;id=__76a3e230-a8ea-4336-a735-8e15fcf83273.__voidzero-dev_setup-vp]
Post job cleanup.
##[end-action id=__76a3e230-a8ea-4336-a735-8e15fcf83273.__voidzero-dev_setup-vp;outcome=success;conclusion=success;duration_ms=93]
##[start-action display=Cache Vite+;id=__76a3e230-a8ea-4336-a735-8e15fcf83273.__actions_cache]
Post job cleanup.
Cache hit occurred on the primary key vite-plus-home-v1-Linux-X64-1.3.0, not saving cache.
##[end-action id=__76a3e230-a8ea-4336-a735-8e15fcf83273.__actions_cache;outcome=success;conclusion=success;duration_ms=112]
Post job cleanup.
[command]/usr/local/bin/git version
git version 2.55.0
Temporarily overriding HOME='/home/runner/_work/_temp/0a767e33-5eba-4b00-8263-6ba6a28d3968' 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: 200
BLACKSMITH_RUNNER_ACQUIRE_JOB_MS: 456
BLACKSMITH_CHECK_RUN_ID: 119748187318
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