chore: remove dead code (59 unused files + ~125 unused exports) (#1835)

* chore: remove dead/unreferenced files across ui, vscode

Remove 59 unused source files (components, hooks, lib utils, stores,
barrels, and orphaned vscode github modules) that are not imported by
any entry-reachable code. Also drop a stale test mock for the removed
execCommands module.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* refactor: remove unused exported symbols (types, functions, consts, hooks)

Remove exported symbols whose identifier is referenced nowhere in the
repository (verified via repo-wide search), across ui types/contracts,
lib utilities, sync layer, stores, and components. Also drop the few
imports/private helpers orphaned by these removals.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* refactor: remove more unused exports (desktop, shortcuts, worktree, vscode)

Continue removing repo-wide unreferenced exported functions, consts and
types across lib/desktop, shortcuts, worktreeSessionCreator, sync, and
vscode gitService, with cascading orphaned helpers/imports cleaned up.

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>

* chore: add dead-code cleanup tooling

* refactor: checkpoint dead-code cleanup

* refactor: remove dead-code suppressions

---------

Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Serhii Dziupin
2026-06-26 19:27:53 +03:00
committed by GitHub
co-authored by Serhii Dziupin Bohdan Triapitsyn
parent 4a37b9a005
commit 00821700de
324 changed files with 444 additions and 14876 deletions
@@ -1,61 +0,0 @@
interface SessionLinkRecord {
id: string;
parentID?: string;
}
export const collectVisibleSessionIdsForBlockingRequests = (
sessions: SessionLinkRecord[] | undefined,
currentSessionId: string | null,
): string[] => {
if (!currentSessionId) return [];
if (!Array.isArray(sessions) || sessions.length === 0) return [currentSessionId];
const current = sessions.find((session) => session.id === currentSessionId);
if (!current) return [currentSessionId];
const childrenByParent = new Map<string, string[]>();
for (const session of sessions) {
if (!session.parentID) {
continue;
}
const existing = childrenByParent.get(session.parentID) ?? [];
existing.push(session.id);
childrenByParent.set(session.parentID, existing);
}
const scoped = [currentSessionId];
const seen = new Set(scoped);
for (const sessionId of scoped) {
const children = childrenByParent.get(sessionId) ?? [];
for (const childId of children) {
if (seen.has(childId)) {
continue;
}
seen.add(childId);
scoped.push(childId);
}
}
return scoped;
};
export const flattenBlockingRequests = <T extends { id: string }>(
source: Map<string, T[]>,
sessionIds: string[],
): T[] => {
if (sessionIds.length === 0) return [];
const seen = new Set<string>();
const result: T[] = [];
for (const sessionId of sessionIds) {
const entries = source.get(sessionId);
if (!entries || entries.length === 0) continue;
for (const entry of entries) {
if (seen.has(entry.id)) continue;
seen.add(entry.id);
result.push(entry);
}
}
return result;
};
@@ -1,78 +0,0 @@
export const normalizeWheelDelta = (input: {
deltaY: number;
deltaMode: number;
rootHeight?: number;
}): number => {
if (input.deltaMode === 1) {
return input.deltaY * 40;
}
if (input.deltaMode === 2) {
return input.deltaY * (input.rootHeight ?? 120);
}
return input.deltaY;
};
export const shouldMarkBoundaryGesture = (input: {
delta: number;
scrollTop: number;
scrollHeight: number;
clientHeight: number;
}): boolean => {
const max = input.scrollHeight - input.clientHeight;
if (max <= 1) {
return true;
}
if (!input.delta) {
return false;
}
if (input.delta < 0) {
return input.scrollTop + input.delta <= 0;
}
const remaining = max - input.scrollTop;
return input.delta > remaining;
};
export const boundaryTarget = (root: HTMLElement, target: EventTarget | null): HTMLElement => {
const current = target instanceof Element ? target : undefined;
const nested = current?.closest('[data-scrollable]');
if (!nested || nested === root) {
return root;
}
if (!(nested instanceof HTMLElement)) {
return root;
}
return nested;
};
export const shouldPauseAutoScrollOnWheel = (input: {
root: HTMLElement;
target: EventTarget | null;
delta: number;
}): boolean => {
if (input.delta >= 0) {
return false;
}
const target = boundaryTarget(input.root, input.target);
if (target === input.root) {
return true;
}
return shouldMarkBoundaryGesture({
delta: input.delta,
scrollTop: target.scrollTop,
scrollHeight: target.scrollHeight,
clientHeight: target.clientHeight,
});
};
export const isNearTop = (scrollTop: number, threshold: number): boolean => {
return scrollTop <= threshold;
};
export const isNearBottom = (distanceFromBottom: number, threshold: number): boolean => {
return distanceFromBottom <= threshold;
};
@@ -18,7 +18,7 @@ type ScrollSpyInput = {
MutationObserver?: typeof globalThis.MutationObserver;
};
export const pickVisibleTurnId = (list: VisibleTurn[], line: number): string | undefined => {
const pickVisibleTurnId = (list: VisibleTurn[], line: number): string | undefined => {
if (list.length === 0) {
return undefined;
}
@@ -40,7 +40,7 @@ export const pickVisibleTurnId = (list: VisibleTurn[], line: number): string | u
return sorted[0]?.id;
};
export const pickOffsetTurnId = (list: OffsetTurn[], cutoff: number): string | undefined => {
const pickOffsetTurnId = (list: OffsetTurn[], cutoff: number): string | undefined => {
if (list.length === 0) {
return undefined;
}
@@ -1,5 +1 @@
export const ACTIVITY_STANDALONE_TOOL_NAMES = new Set<string>(['task']);
export const HIDDEN_INTERNAL_TOOL_NAMES = new Set<string>(['todowrite', 'todoread']);
export const TURN_TEXT_THROTTLE_DEFAULT_MS = 100;
@@ -1,67 +1,6 @@
import type { SessionMemoryState } from '@/sync/viewport-store';
export interface TurnHistorySignalsInput {
memoryState: SessionMemoryState | null;
loadedMessageCount: number;
loadedTurnCount: number;
turnStart: number;
defaultHistoryLimit: number;
}
export interface TurnHistorySignals {
hasBufferedTurns: boolean;
hasMoreAboveTurns: boolean;
historyLoading: boolean;
canLoadEarlier: boolean;
}
const deriveHasMoreAbove = (
memoryState: SessionMemoryState | null,
loadedMessageCount: number,
loadedTurnCount: number,
defaultHistoryLimit: number,
): boolean => {
if (!memoryState) {
return loadedMessageCount >= defaultHistoryLimit;
}
if (memoryState.historyComplete === true) {
return false;
}
if (memoryState.hasMoreTurnsAbove === true || memoryState.hasMoreAbove === true) {
return true;
}
if (memoryState.historyComplete === false) {
return true;
}
if (memoryState.hasMoreTurnsAbove === false || memoryState.hasMoreAbove === false) {
return false;
}
const fallbackMessageSignal = loadedMessageCount >= defaultHistoryLimit;
const fallbackTurnSignal = loadedTurnCount >= Math.max(1, Math.floor(defaultHistoryLimit / 2));
return fallbackMessageSignal || fallbackTurnSignal;
};
export const deriveTurnHistorySignals = (
input: TurnHistorySignalsInput,
): TurnHistorySignals => {
const hasBufferedTurns = input.turnStart > 0;
const hasMoreAboveTurns = deriveHasMoreAbove(
input.memoryState,
input.loadedMessageCount,
input.loadedTurnCount,
input.defaultHistoryLimit,
);
const historyLoading = Boolean(input.memoryState?.historyLoading);
return {
hasBufferedTurns,
hasMoreAboveTurns,
historyLoading,
canLoadEarlier: hasBufferedTurns || hasMoreAboveTurns,
};
};
@@ -1,78 +0,0 @@
import { projectTurnIndexes } from './projectTurnIndexes';
import type { TurnProjectionResult, TurnRecord } from './types';
const areTurnMessagesReferenceStable = (previousTurn: TurnRecord, nextTurn: TurnRecord): boolean => {
if (previousTurn.userMessage !== nextTurn.userMessage) {
return false;
}
if (previousTurn.assistantMessages.length !== nextTurn.assistantMessages.length) {
return false;
}
for (let index = 0; index < previousTurn.assistantMessages.length; index += 1) {
if (previousTurn.assistantMessages[index] !== nextTurn.assistantMessages[index]) {
return false;
}
}
return true;
};
const buildTurnSignature = (turn: TurnRecord): string => {
const assistantIds = turn.assistantMessageIds.join(',');
return [
turn.turnId,
turn.headerMessageId ?? '',
assistantIds,
turn.summaryText ?? '',
turn.stream.isStreaming ? '1' : '0',
turn.stream.isRetrying ? '1' : '0',
turn.completedAt ?? '',
].join('|');
};
export const stabilizeTurnProjection = (
nextProjection: TurnProjectionResult,
previousProjection: TurnProjectionResult | null,
): TurnProjectionResult => {
if (!previousProjection || previousProjection.turns.length === 0 || nextProjection.turns.length === 0) {
return nextProjection;
}
const previousById = new Map(previousProjection.turns.map((turn) => [turn.turnId, turn]));
let reused = false;
const stabilizedTurns = nextProjection.turns.map((turn, index) => {
const isLastTurn = index === nextProjection.turns.length - 1;
if (isLastTurn) {
return turn;
}
const previousTurn = previousById.get(turn.turnId);
if (!previousTurn) {
return turn;
}
if (buildTurnSignature(previousTurn) !== buildTurnSignature(turn)) {
return turn;
}
if (!areTurnMessagesReferenceStable(previousTurn, turn)) {
return turn;
}
reused = true;
return previousTurn;
});
if (!reused) {
return nextProjection;
}
const projection = projectTurnIndexes(stabilizedTurns);
return {
...projection,
ungroupedMessageIds: nextProjection.ungroupedMessageIds,
};
};
@@ -1,159 +0,0 @@
import React from 'react';
export interface TurnStageConfig {
init: number;
batch: number;
}
export interface UseStageTurnsOptions {
sessionKey: string;
turnStart: number;
totalTurns: number;
config?: Partial<TurnStageConfig>;
disabled?: boolean;
}
export interface StageTurnsResult {
stagedCount: number;
stageStartIndex: number;
isStaging: boolean;
}
const DEFAULT_STAGE_CONFIG: TurnStageConfig = {
init: 10,
batch: 8,
};
export const getInitialStageCount = (total: number, config: TurnStageConfig): number => {
if (total <= 0) {
return 0;
}
return Math.min(total, Math.max(1, config.init));
};
export const getNextStageCount = (current: number, total: number, config: TurnStageConfig): number => {
if (total <= 0) {
return 0;
}
const batch = Math.max(1, config.batch);
return Math.min(total, current + batch);
};
export const getStageStartIndex = (total: number, stagedCount: number): number => {
if (stagedCount >= total) {
return 0;
}
return Math.max(0, total - stagedCount);
};
export const useStageTurns = ({
sessionKey,
turnStart,
totalTurns,
config,
disabled,
}: UseStageTurnsOptions): StageTurnsResult => {
const effectiveConfig = React.useMemo<TurnStageConfig>(() => {
return {
init: config?.init ?? DEFAULT_STAGE_CONFIG.init,
batch: config?.batch ?? DEFAULT_STAGE_CONFIG.batch,
};
}, [config?.batch, config?.init]);
const [state, setState] = React.useState(() => ({
activeSession: '',
completedSession: '',
count: totalTurns,
}));
const stateRef = React.useRef(state);
React.useEffect(() => {
stateRef.current = state;
}, [state]);
React.useEffect(() => {
let frameId: number | null = null;
const snapshot = stateRef.current;
const shouldStage =
!disabled
&& turnStart > 0
&& totalTurns > effectiveConfig.init
&& snapshot.completedSession !== sessionKey
&& snapshot.activeSession !== sessionKey;
if (!shouldStage) {
setState((previous) => {
if (previous.count === totalTurns && previous.activeSession === '') {
return previous;
}
return {
...previous,
activeSession: '',
count: totalTurns,
};
});
return () => {
if (frameId !== null && typeof window !== 'undefined') {
window.cancelAnimationFrame(frameId);
}
};
}
let nextCount = getInitialStageCount(totalTurns, effectiveConfig);
setState((previous) => ({
...previous,
activeSession: sessionKey,
count: nextCount,
}));
const step = () => {
nextCount = getNextStageCount(nextCount, totalTurns, effectiveConfig);
setState((previous) => ({
...previous,
count: nextCount,
}));
if (nextCount >= totalTurns) {
setState((previous) => ({
...previous,
completedSession: sessionKey,
activeSession: '',
count: totalTurns,
}));
frameId = null;
return;
}
frameId = window.requestAnimationFrame(step);
};
if (typeof window !== 'undefined') {
frameId = window.requestAnimationFrame(step);
}
return () => {
if (frameId !== null && typeof window !== 'undefined') {
window.cancelAnimationFrame(frameId);
}
};
}, [disabled, effectiveConfig, sessionKey, totalTurns, turnStart]);
const stagedCount = React.useMemo(() => {
if (turnStart <= 0 || disabled) {
return totalTurns;
}
if (state.completedSession === sessionKey) {
return totalTurns;
}
if (state.count <= 0) {
return getInitialStageCount(totalTurns, effectiveConfig);
}
return Math.min(totalTurns, state.count);
}, [disabled, effectiveConfig, sessionKey, state.completedSession, state.count, totalTurns, turnStart]);
return {
stagedCount,
stageStartIndex: getStageStartIndex(totalTurns, stagedCount),
isStaging: !disabled && turnStart > 0 && state.activeSession === sessionKey && state.completedSession !== sessionKey,
};
};
@@ -5,7 +5,7 @@ export interface ChatMessageEntry {
parts: Part[];
}
export type TurnActivityKind = 'tool' | 'reasoning' | 'justification';
type TurnActivityKind = 'tool' | 'reasoning' | 'justification';
export interface TurnMessageRecord {
messageId: string;
@@ -83,7 +83,7 @@ export interface TurnRecord {
durationMs?: number;
}
export interface TurnMessageMeta {
interface TurnMessageMeta {
turnId: string;
messageId: string;
userMessageId: string;