diff --git a/apps/web/src/components/BranchToolbarEnvModeSelector.tsx b/apps/web/src/components/BranchToolbarEnvModeSelector.tsx index c0fa463fe72a924e4a23159e70a70368de71281c..611bd4234a0f2da387f44457edc2bd0e8210ed20 100644 --- a/apps/web/src/components/BranchToolbarEnvModeSelector.tsx +++ b/apps/web/src/components/BranchToolbarEnvModeSelector.tsx @@ -18,7 +18,7 @@ import { SelectValue, } from "./ui/select"; -export const PREVIOUS_WORKTREE_SELECT_VALUE = "previous-worktree"; +const PREVIOUS_WORKTREE_SELECT_VALUE = "previous-worktree"; interface BranchToolbarEnvModeSelectorProps { envLocked: boolean; diff --git a/apps/web/src/components/ConfirmDialogHost.tsx b/apps/web/src/components/ConfirmDialogHost.tsx index c169a1eff7fc8eb70d515467a98f1f18ab14ce99..7babc62fd2eaa4cfcc5c2f9c79890c4e07036899 100644 --- a/apps/web/src/components/ConfirmDialogHost.tsx +++ b/apps/web/src/components/ConfirmDialogHost.tsx @@ -23,7 +23,7 @@ type ConfirmationCopy = { readonly description: string | null; }; -export function resolveConfirmDialogCopy(message: string): ConfirmationCopy { +function resolveConfirmDialogCopy(message: string): ConfirmationCopy { const normalizedMessage = message.trim(); const lines = normalizedMessage.split("\n"); const questionLineIndex = lines.findIndex((line) => line.trim().endsWith("?")); diff --git a/apps/web/src/components/DiffPanel.tsx b/apps/web/src/components/DiffPanel.tsx index af6d95dba0b026eda050597748c850700f4dfe5b..d764b9c6a9e25fa368a03de3a12290f4b475d0af 100644 --- a/apps/web/src/components/DiffPanel.tsx +++ b/apps/web/src/components/DiffPanel.tsx @@ -104,8 +104,6 @@ interface DiffPanelProps { workspaceMutationId: string | null; } -export { DiffWorkerPoolProvider } from "./DiffWorkerPoolProvider"; - export default function DiffPanel({ mode = "inline", composerDraftTarget, diff --git a/apps/web/src/components/EnvironmentMachineIcon.tsx b/apps/web/src/components/EnvironmentMachineIcon.tsx index 31b7a953a3a44c973bd50fa297057b1982754949..b42bf41266c93d8e063c380fad494e42ec322d7a 100644 --- a/apps/web/src/components/EnvironmentMachineIcon.tsx +++ b/apps/web/src/components/EnvironmentMachineIcon.tsx @@ -23,7 +23,7 @@ function LucideLike(props: SVGProps) { } /** A Mac mini: squat rounded slab with a front-edge LED. */ -export function MacMiniIcon(props: SVGProps) { +function MacMiniIcon(props: SVGProps) { return ( @@ -33,7 +33,7 @@ export function MacMiniIcon(props: SVGProps) { } /** A Mac Studio: the same slab twice as tall, ports along the front foot. */ -export function MacStudioIcon(props: SVGProps) { +function MacStudioIcon(props: SVGProps) { return ( diff --git a/apps/web/src/components/LegacySidebar.tsx b/apps/web/src/components/LegacySidebar.tsx index bacdfa62118ca1e2c20ba464466aac34afbee48c..0eb6a74ebe80525bdd7860be715a685e928b552d 100644 --- a/apps/web/src/components/LegacySidebar.tsx +++ b/apps/web/src/components/LegacySidebar.tsx @@ -354,7 +354,7 @@ interface SidebarThreadRowProps { ) => boolean; } -export const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowProps) { +const SidebarThreadRow = memo(function SidebarThreadRow(props: SidebarThreadRowProps) { const { orderedProjectThreadKeys, isActive, diff --git a/apps/web/src/components/ProviderUpdateLaunchNotification.logic.ts b/apps/web/src/components/ProviderUpdateLaunchNotification.logic.ts index 16184ac070bc1f94c046b6e12fe4d89960de8398..6da4eaac6dded426bb38a0fed656629db12d8e72 100644 --- a/apps/web/src/components/ProviderUpdateLaunchNotification.logic.ts +++ b/apps/web/src/components/ProviderUpdateLaunchNotification.logic.ts @@ -220,7 +220,7 @@ export function providerUpdateNotificationKey( return parts.length > 0 ? parts.join("|") : null; } -export function formatProviderList(providers: ReadonlyArray>) { +function formatProviderList(providers: ReadonlyArray>) { const names = providers.map( (provider) => PROVIDER_DISPLAY_NAMES[provider.driver] ?? provider.driver, ); @@ -249,7 +249,7 @@ export function shouldShowPrimaryProviderUpdateToast(view: ProviderUpdateToastVi return view.phase !== "running"; } -export function getProviderUpdateRunningToastView(providerCount: number): ProviderUpdateToastView { +function getProviderUpdateRunningToastView(providerCount: number): ProviderUpdateToastView { return { phase: "running", type: "loading", diff --git a/apps/web/src/components/Sidebar.logic.ts b/apps/web/src/components/Sidebar.logic.ts index d5d7d1f23a440223e00cbd7e24bea866034018a7..194db3130011d3a75d42c835ebff1c4788a76e59 100644 --- a/apps/web/src/components/Sidebar.logic.ts +++ b/apps/web/src/components/Sidebar.logic.ts @@ -15,7 +15,7 @@ import type { SidebarThreadSummary, Thread } from "../types"; import { cn } from "../lib/utils"; import { isLatestTurnSettled } from "../session-logic"; -export const THREAD_SELECTION_SAFE_SELECTOR = "[data-thread-item], [data-thread-selection-safe]"; +const THREAD_SELECTION_SAFE_SELECTOR = "[data-thread-item], [data-thread-selection-safe]"; export const THREAD_JUMP_HINT_SHOW_DELAY_MS = 200; // Visible sidebar rows are prewarmed into the thread-detail cache so opening a // nearby thread usually reuses an already-hot subscription. Each prewarmed @@ -23,10 +23,10 @@ export const THREAD_JUMP_HINT_SHOW_DELAY_MS = 200; // activities, growing as agents work) for as long as the row stays visible, // so this limit is a direct renderer-heap and server-load multiplier — keep // it small; cold opens still render instantly from the cached snapshot. -export const SIDEBAR_THREAD_PREWARM_LIMIT = 3; +const SIDEBAR_THREAD_PREWARM_LIMIT = 3; // A small buffer keeps the next few rows warm without leasing every row that // content-visibility leaves mounted below the scroll viewport. -export const SIDEBAR_ROW_SUBSCRIPTION_OVERSCAN_PX = 160; +const SIDEBAR_ROW_SUBSCRIPTION_OVERSCAN_PX = 160; export function useSidebarRowSubscriptionLease(isActive: boolean): { readonly leaseLiveStatus: boolean; @@ -544,13 +544,6 @@ export function resolveSidebarThreadStatus(thread: SidebarThreadStatusInput): Si return "ready"; } -/** NaN-safe Date.parse for sort comparators: a malformed timestamp must not - poison the whole ordering, so it sinks to the epoch instead. */ -export function parseTimestampMs(isoDate: string): number { - const parsed = Date.parse(isoDate); - return Number.isNaN(parsed) ? 0 : parsed; -} - /** First VALID timestamp wins: `a ?? b` falls through on null, but a present- yet-malformed string must also fall through to the next candidate rather than sink the row to the epoch. */ @@ -567,7 +560,7 @@ export function firstValidTimestampMs( /** String twin of firstValidTimestampMs for callers that need the ISO string (display labels, tick anchors) rather than epoch ms. */ -export function firstValidTimestamp( +function firstValidTimestamp( ...candidates: ReadonlyArray ): string | null { for (const candidate of candidates) { diff --git a/apps/web/src/components/ThreadCommandSubtitle.tsx b/apps/web/src/components/ThreadCommandSubtitle.tsx index cd50745187197584446a63a14fe5294ccf6b5599..5890e99d201049bc8a0b239cffbc26b7c29a0418 100644 --- a/apps/web/src/components/ThreadCommandSubtitle.tsx +++ b/apps/web/src/components/ThreadCommandSubtitle.tsx @@ -15,8 +15,7 @@ export type ThreadCommandSubtitleVariant = | "favicon-workspace" | "favicon-branch-harness"; -export const THREAD_COMMAND_SUBTITLE_VARIANT: ThreadCommandSubtitleVariant = - "favicon-workspace-harness"; +const THREAD_COMMAND_SUBTITLE_VARIANT: ThreadCommandSubtitleVariant = "favicon-workspace-harness"; export const COMMAND_PALETTE_META_ICON_CLASS = "size-3 shrink-0 text-muted-foreground/70"; diff --git a/apps/web/src/components/chat/ComposerPendingElementContexts.tsx b/apps/web/src/components/chat/ComposerPendingElementContexts.tsx index 7373403a7c393f1008b5b753baf3d7d78582b92a..8d59485b7d15b87db80c56134846b798689afc1d 100644 --- a/apps/web/src/components/chat/ComposerPendingElementContexts.tsx +++ b/apps/web/src/components/chat/ComposerPendingElementContexts.tsx @@ -39,7 +39,7 @@ function buildTooltipContent(context: ElementContextDraft): string { return lines.join("\n"); } -export function ComposerPendingElementContextChip({ +function ComposerPendingElementContextChip({ context, onRemove, }: ComposerPendingElementContextChipProps) { diff --git a/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx b/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx index 37c05eab2d0d6bacbd8abaaac9eee1604263c845..e2b3109f17a50df38217337c77d547e487584db9 100644 --- a/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx +++ b/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx @@ -1,4 +1,3 @@ -import { cn } from "~/lib/utils"; import { type TerminalContextDraft, formatTerminalContextLabel, @@ -6,11 +5,6 @@ import { } from "~/lib/terminalContext"; import { TerminalContextInlineChip } from "./TerminalContextInlineChip"; -interface ComposerPendingTerminalContextsProps { - contexts: ReadonlyArray; - className?: string; -} - interface ComposerPendingTerminalContextChipProps { context: TerminalContextDraft; } @@ -26,19 +20,3 @@ export function ComposerPendingTerminalContextChip({ return ; } - -export function ComposerPendingTerminalContexts(props: ComposerPendingTerminalContextsProps) { - const { contexts, className } = props; - - if (contexts.length === 0) { - return null; - } - - return ( -
- {contexts.map((context) => ( - - ))} -
- ); -} diff --git a/apps/web/src/components/chat/ContextWindowMeter.logic.ts b/apps/web/src/components/chat/ContextWindowMeter.logic.ts index be3dacb05e92749dea94bf7fb612c985ed0315c4..6ff2b6e0a660a6e5d7aa3d4726fcc76fcf660e83 100644 --- a/apps/web/src/components/chat/ContextWindowMeter.logic.ts +++ b/apps/web/src/components/chat/ContextWindowMeter.logic.ts @@ -9,8 +9,8 @@ import { } from "../../providerInstances"; import { getTriggerDisplayModelName, type ModelEsque } from "./providerIconUtils"; -export const CLAUDE_RESUME_COMPACTION_MINUTES = 70; -export const CLAUDE_RESUME_COMPACTION_TOKENS = 100_000; +const CLAUDE_RESUME_COMPACTION_MINUTES = 70; +const CLAUDE_RESUME_COMPACTION_TOKENS = 100_000; export function providerSupportsManualCompaction( provider: ProviderInstanceEntry | null | undefined, diff --git a/apps/web/src/components/chat/MessagesTimeline.logic.ts b/apps/web/src/components/chat/MessagesTimeline.logic.ts index 03d1e46faf32ee252b52cdcff85d2310de94ff7c..1288cd6fad8b9eb7c3546f52fd267d736221ec27 100644 --- a/apps/web/src/components/chat/MessagesTimeline.logic.ts +++ b/apps/web/src/components/chat/MessagesTimeline.logic.ts @@ -14,7 +14,6 @@ import { } from "@t3tools/client-runtime/work-log/presentation"; export { normalizeCompactToolLabel, - summarizeToolGroup, toolGroupAction, } from "@t3tools/client-runtime/work-log/presentation"; import { @@ -31,11 +30,11 @@ import { type ChatMessage, type ProposedPlan, type TurnDiffSummary } from "../.. import { type MessageId, type OrchestrationLatestTurn, type TurnId } from "@t3tools/contracts"; import { formatWorkspaceRelativePath } from "../../filePathDisplay"; -export const TIMELINE_MINIMAP_ITEM_SPACING = 8; +const TIMELINE_MINIMAP_ITEM_SPACING = 8; export const TIMELINE_MINIMAP_MIN_ITEMS = 2; -export const TIMELINE_MINIMAP_MAX_HEIGHT_CSS = "calc(100vh - 18rem)"; -export const TIMELINE_CONTENT_MAX_WIDTH = 768; -export const TIMELINE_MINIMAP_PERSISTENT_GUTTER = 48; +const TIMELINE_MINIMAP_MAX_HEIGHT_CSS = "calc(100vh - 18rem)"; +const TIMELINE_CONTENT_MAX_WIDTH = 768; +const TIMELINE_MINIMAP_PERSISTENT_GUTTER = 48; function singleToolCallLabel(entry: WorkLogEntry): string { const toolPresentation = resolveWorkEntryToolPresentation(entry, "completed"); @@ -145,7 +144,7 @@ export interface TimelineEndState { * A small pixel band (instead of the 1px isAtEnd epsilon alone) keeps re-arming * reliable while streaming content is still growing under the viewport. */ -export const TIMELINE_FOLLOW_REARM_THRESHOLD_PX = 40; +const TIMELINE_FOLLOW_REARM_THRESHOLD_PX = 40; export function resolveTimelineIsAtEnd(state: TimelineEndState | undefined): boolean | undefined { if (!state) { @@ -207,9 +206,9 @@ export function resolveTimelineMinimapHasPersistentGutter(viewportWidth: number) return sideGutter >= TIMELINE_MINIMAP_PERSISTENT_GUTTER; } -export const TIMELINE_MINIMAP_HIT_STRIP_LEFT = 12; -export const TIMELINE_MINIMAP_HIT_STRIP_MAX_WIDTH = 40; -export const TIMELINE_MINIMAP_EXPANDED_HIT_STRIP_WIDTH = "22rem"; +const TIMELINE_MINIMAP_HIT_STRIP_LEFT = 12; +const TIMELINE_MINIMAP_HIT_STRIP_MAX_WIDTH = 40; +const TIMELINE_MINIMAP_EXPANDED_HIT_STRIP_WIDTH = "22rem"; /** * The minimap overlays the viewport's left edge while the content column is diff --git a/apps/web/src/components/chat/externalLinkContextMenu.ts b/apps/web/src/components/chat/externalLinkContextMenu.ts index d0f37f97d8002fcf821608b01b3ffb13ae0c14de..f836f069006dddbae1427f84f05e3b15c2e4c4a3 100644 --- a/apps/web/src/components/chat/externalLinkContextMenu.ts +++ b/apps/web/src/components/chat/externalLinkContextMenu.ts @@ -35,7 +35,7 @@ const EXTERNAL_LINK_CONTEXT_MENU_ITEMS = [ * whole menu with the one item that cannot be honoured is what left a right-click on a link * showing the platform's cut-and-paste menu instead of a way to copy the link. */ -export function externalLinkContextMenuItems(options: { +function externalLinkContextMenuItems(options: { readonly canOpenInPreview: boolean; readonly threadLinkAction?: "link-to-thread" | "unlink-from-thread" | undefined; }): readonly ContextMenuItem[] { diff --git a/apps/web/src/components/cloud/CloudEnvironmentConnectList.tsx b/apps/web/src/components/cloud/CloudEnvironmentConnectList.tsx index 7f29c69c3208a4ca73999f289fa8b638a39a40cc..747b82d1e5528a85c045498093de23badc274f28 100644 --- a/apps/web/src/components/cloud/CloudEnvironmentConnectList.tsx +++ b/apps/web/src/components/cloud/CloudEnvironmentConnectList.tsx @@ -32,7 +32,7 @@ export interface SavedCloudEnvironmentConnection { readonly connection: EnvironmentConnectionPresentation; } -export function RemoteEnvironmentRowsSkeleton() { +function RemoteEnvironmentRowsSkeleton() { return (
diff --git a/apps/web/src/components/composerFooterLayout.ts b/apps/web/src/components/composerFooterLayout.ts index 2747e72bb029a469f7a2fa8886fc2e7f069e8ef7..5dd6000dbc7576d93c0a1cf97655a93d32233c04 100644 --- a/apps/web/src/components/composerFooterLayout.ts +++ b/apps/web/src/components/composerFooterLayout.ts @@ -1,6 +1,6 @@ export const COMPOSER_FOOTER_COMPACT_BREAKPOINT_PX = 620; export const COMPOSER_FOOTER_WIDE_ACTIONS_COMPACT_BREAKPOINT_PX = 780; -export const RESTING_COMPOSER_IMAGE_THUMBNAIL_LIMIT = 3; +const RESTING_COMPOSER_IMAGE_THUMBNAIL_LIMIT = 3; export function getRestingComposerImagePreviewCounts(imageCount: number): { visibleCount: number; diff --git a/apps/web/src/components/files/projectFilesQueryState.ts b/apps/web/src/components/files/projectFilesQueryState.ts index d02ec99605ba944d9715f0edfcb2903108a10eb6..a127729209560de630a4172f22716be39b7bb74b 100644 --- a/apps/web/src/components/files/projectFilesQueryState.ts +++ b/apps/web/src/components/files/projectFilesQueryState.ts @@ -33,7 +33,7 @@ interface ProjectQueryState { readonly refresh: () => void; } -export function getProjectEntriesQueryAtom(environmentId: EnvironmentId, cwd: string) { +function getProjectEntriesQueryAtom(environmentId: EnvironmentId, cwd: string) { return projectEnvironment.listEntries({ environmentId, input: { cwd } }); } diff --git a/apps/web/src/components/media/MediaActions.tsx b/apps/web/src/components/media/MediaActions.tsx index cf79c81b9f60089da38aaa0fd943122c27fbcdbf..d6c5cca7015325120ee53ed44549110e395be39f 100644 --- a/apps/web/src/components/media/MediaActions.tsx +++ b/apps/web/src/components/media/MediaActions.tsx @@ -33,7 +33,7 @@ function mediaFileName(source: MediaActionSource): string { } /** Explicit byte operations get fresh capabilities without replacing a player's active source. */ -export function useMediaActions(source: MediaActionSource) { +function useMediaActions(source: MediaActionSource) { const createAssetUrl = useAtomQueryRunner(assetEnvironment.createUrl, { reportFailure: false, refresh: true, diff --git a/apps/web/src/components/preview/previewAutomationErrors.ts b/apps/web/src/components/preview/previewAutomationErrors.ts index dcf35de53f2d81d014b773bd04312a58025fe1a3..97a099ec72eb16ce688fa552d413af8cbdb6985f 100644 --- a/apps/web/src/components/preview/previewAutomationErrors.ts +++ b/apps/web/src/components/preview/previewAutomationErrors.ts @@ -216,7 +216,7 @@ export const PreviewAutomationHostError = Schema.Union([ ]); export type PreviewAutomationHostError = typeof PreviewAutomationHostError.Type; -export const isPreviewAutomationHostError = Schema.is(PreviewAutomationHostError); +const isPreviewAutomationHostError = Schema.is(PreviewAutomationHostError); export function serializePreviewAutomationHostError( error: PreviewAutomationHostError, diff --git a/apps/web/src/components/preview/previewMiniPlayerLayout.ts b/apps/web/src/components/preview/previewMiniPlayerLayout.ts index 3aa2e141af07844e0e5a413df2652f62f0597aa4..10723cedaa8a201b67cdcbecd759386ea7d1f3ab 100644 --- a/apps/web/src/components/preview/previewMiniPlayerLayout.ts +++ b/apps/web/src/components/preview/previewMiniPlayerLayout.ts @@ -4,7 +4,7 @@ export const PREVIEW_MINI_PLAYER_EDGE_GAP = 12; // The mini-player shell straddles this webview at 47 and 49; dialogs begin at 50. export const PREVIEW_MINI_PLAYER_WEBVIEW_Z_INDEX = 48; export const PREVIEW_MINI_PLAYER_DEFAULT_SIZE = { width: 320, height: 200 } as const; -export const PREVIEW_MINI_PLAYER_MIN_SIZE = { width: 240, height: 150 } as const; +const PREVIEW_MINI_PLAYER_MIN_SIZE = { width: 240, height: 150 } as const; export function clampPreviewMiniPlayerSize( size: PreviewMiniPlayerSize, diff --git a/apps/web/src/components/projectScriptEditor.tsx b/apps/web/src/components/projectScriptEditor.tsx index 4b728c2e07ebba274c4feb35e7469fe3df6a8b15..4ffd453955e91209b5792181fc1e21e855420b44 100644 --- a/apps/web/src/components/projectScriptEditor.tsx +++ b/apps/web/src/components/projectScriptEditor.tsx @@ -49,7 +49,7 @@ import { Popover, PopoverPopup, PopoverTrigger } from "./ui/popover"; import { Switch } from "./ui/switch"; import { Textarea } from "./ui/textarea"; -export const SCRIPT_ICONS: Array<{ id: ProjectScriptIcon; label: string }> = [ +const SCRIPT_ICONS: Array<{ id: ProjectScriptIcon; label: string }> = [ { id: "play", label: "Play" }, { id: "test", label: "Test" }, { id: "lint", label: "Lint" }, diff --git a/apps/web/src/components/pullRequest/PullRequestCodeTab.tsx b/apps/web/src/components/pullRequest/PullRequestCodeTab.tsx index aa2d278ce249d3b8823378a25e1497f80207298e..b77a3711d90f022f576455fa19deb3cfa3b5e990 100644 --- a/apps/web/src/components/pullRequest/PullRequestCodeTab.tsx +++ b/apps/web/src/components/pullRequest/PullRequestCodeTab.tsx @@ -187,7 +187,7 @@ function getReviewPositionAnchor(position: PullRequestReviewPosition): { * host sit under the line they were written on, and a new comment joins the review being * drafted rather than being posted as it is typed. */ -export function PullRequestCodeTab({ +function PullRequestCodeTab({ environmentId, reference, detail, diff --git a/apps/web/src/components/pullRequest/pullRequestLinkContextMenu.ts b/apps/web/src/components/pullRequest/pullRequestLinkContextMenu.ts index ef554d0eb3ee9768ba40f0b3d1391d97266c9044..1ccdb64b73f4314a09a4b2eefe5b5e4b9ace0bca 100644 --- a/apps/web/src/components/pullRequest/pullRequestLinkContextMenu.ts +++ b/apps/web/src/components/pullRequest/pullRequestLinkContextMenu.ts @@ -8,7 +8,7 @@ import { toastManager } from "../ui/toast"; export type PullRequestLinkContextMenuAction = "copy-link" | "open-external"; /** Named for the host rather than "externally": the point is where you will land. */ -export const OPEN_ON_HOST_LABELS: Partial> = { +const OPEN_ON_HOST_LABELS: Partial> = { github: "Open on GitHub", gitlab: "Open on GitLab", bitbucket: "Open on Bitbucket", diff --git a/apps/web/src/components/pullRequest/pullRequestList.logic.ts b/apps/web/src/components/pullRequest/pullRequestList.logic.ts index cee6724893890f50ebd51f92a59d6169ff936a53..c2fdde3d011f968bf0ac3fbfd874fc551530a426 100644 --- a/apps/web/src/components/pullRequest/pullRequestList.logic.ts +++ b/apps/web/src/components/pullRequest/pullRequestList.logic.ts @@ -67,7 +67,7 @@ export type PullRequestViewers = PullRequestListResult["viewers"]; /** A row plus the environment that read it, where the caller has one to give. */ type ScopedEntry = PullRequestListEntry & { readonly environmentId?: string }; -export const pullRequestViewerKey = (entry: ScopedEntry): string => +const pullRequestViewerKey = (entry: ScopedEntry): string => `${entry.environmentId ?? ""} ${entry.host}`; const GROUP_LABELS: Record = { diff --git a/apps/web/src/components/pullRequest/pullRequestListPreferences.ts b/apps/web/src/components/pullRequest/pullRequestListPreferences.ts index bc2bc6f272cda3fdc5b6ef0fec5d284e0565ce96..95c4bf02e743e8dcfc6e413668372af79b8ebf18 100644 --- a/apps/web/src/components/pullRequest/pullRequestListPreferences.ts +++ b/apps/web/src/components/pullRequest/pullRequestListPreferences.ts @@ -37,7 +37,7 @@ export type PullRequestListPreferencePatch = { [Key in keyof PullRequestListPreferences]?: PullRequestListPreferences[Key] | undefined; }; -export const DEFAULT_PULL_REQUEST_LIST_PREFERENCES = { +const DEFAULT_PULL_REQUEST_LIST_PREFERENCES = { involvement: "all", state: "open", } as const satisfies PullRequestListPreferences; diff --git a/apps/web/src/components/settings/KeybindingsSettings.logic.ts b/apps/web/src/components/settings/KeybindingsSettings.logic.ts index d987bc7a83ddf70b5dee91f5be3340bbb6e0b910..c366a87e7efd1609d866a1afbf7dd3d7a796b704 100644 --- a/apps/web/src/components/settings/KeybindingsSettings.logic.ts +++ b/apps/web/src/components/settings/KeybindingsSettings.logic.ts @@ -291,7 +291,7 @@ function titleCaseCommandSegment(segment: string): string { return words.join(" "); } -export function normalizeShortcutKeyToken(key: string): string | null { +function normalizeShortcutKeyToken(key: string): string | null { const normalized = key.toLowerCase(); if ( normalized === "meta" || diff --git a/apps/web/src/components/settings/ProjectSettingsPanel.tsx b/apps/web/src/components/settings/ProjectSettingsPanel.tsx index 7be0f15cd5c2fe02a2c3490b95b40d931c1aa833..0181041ec6b1eafb18f1e5eb350224c766c46d30 100644 --- a/apps/web/src/components/settings/ProjectSettingsPanel.tsx +++ b/apps/web/src/components/settings/ProjectSettingsPanel.tsx @@ -127,14 +127,14 @@ const ProjectIconPickerDialog = lazy(() => })), ); -export const PROJECT_GROUPING_MODE_LABELS: Record = { +const PROJECT_GROUPING_MODE_LABELS: Record = { repository: "Group by repository", repository_path: "Group by repository path", separate: "Keep separate", }; /** Logical project groups for the settings page, sorted by display name. */ -export function useSettingsProjectGroups(): SidebarProjectSnapshot[] { +function useSettingsProjectGroups(): SidebarProjectSnapshot[] { const projects = useProjects(); const projectGroupingSettings = useClientSettings(selectProjectGroupingSettings); const primaryEnvironmentId = usePrimaryEnvironmentId(); @@ -253,7 +253,7 @@ function ProjectSettingsBreadcrumb({ projectKey }: { projectKey: string }) { ); } -export function ProjectSettingsPanel({ projectKey }: { projectKey: string }) { +function ProjectSettingsPanel({ projectKey }: { projectKey: string }) { const groups = useSettingsProjectGroups(); const navigate = useNavigate(); diff --git a/apps/web/src/components/settings/SettingsSidebarNav.tsx b/apps/web/src/components/settings/SettingsSidebarNav.tsx index f8f0254cda610693a7c637d6f790f187d276ad16..0e1ff2076e998dde14037b4fc38abec404e74c76 100644 --- a/apps/web/src/components/settings/SettingsSidebarNav.tsx +++ b/apps/web/src/components/settings/SettingsSidebarNav.tsx @@ -80,7 +80,7 @@ const SETTINGS_SECTION_ICONS: Readonly< "/settings/archived": ArchiveIcon, }; -export const SETTINGS_NAV_ITEMS: ReadonlyArray<{ +const SETTINGS_NAV_ITEMS: ReadonlyArray<{ label: string; to: SettingsPath; icon: ComponentType<{ className?: string }>; diff --git a/apps/web/src/components/settings/ThemeWireframe.tsx b/apps/web/src/components/settings/ThemeWireframe.tsx index ce4f13f208e5a164a9f0068832b5bc3d59021901..895d8d1eecb71065253116993cd46c58effb5cad 100644 --- a/apps/web/src/components/settings/ThemeWireframe.tsx +++ b/apps/web/src/components/settings/ThemeWireframe.tsx @@ -4,7 +4,7 @@ import type { ThemeCardPreviewColors } from "./ThemePreviewCircles"; // A simple miniature of the app: sidebar, a short conversation, the // composer, and the orchestrator panel floating over the interface as an // island with horizontal agent rows. -export function ThemeWireframePane({ +function ThemeWireframePane({ colors, clip, }: { diff --git a/apps/web/src/components/settings/customModelEditor.logic.ts b/apps/web/src/components/settings/customModelEditor.logic.ts index 0d48057206dfe2d0a47e0a0d26296a6bed839711..15de96e2f182255d02b14e852c6da51befd46b34 100644 --- a/apps/web/src/components/settings/customModelEditor.logic.ts +++ b/apps/web/src/components/settings/customModelEditor.logic.ts @@ -104,7 +104,7 @@ export const DESCRIPTOR_PRESETS_BY_KIND: Partial< }; let nextKey = 0; -export function newEditorKey(): string { +function newEditorKey(): string { nextKey += 1; return `k${nextKey}`; } @@ -140,7 +140,7 @@ export function emptyEditorChoice(): EditorChoice { * by built-in runtime profiles a custom entry does not have, so they are * dropped rather than stored as a plain option value. */ -export function descriptorToEditor(descriptor: ProviderOptionDescriptor): EditorDescriptor { +function descriptorToEditor(descriptor: ProviderOptionDescriptor): EditorDescriptor { const promptInjected = new Set( descriptor.type === "select" ? (descriptor.promptInjectedValues ?? []) : [], ); diff --git a/apps/web/src/components/settings/providerDriverMeta.ts b/apps/web/src/components/settings/providerDriverMeta.ts index a782632b10c87263c2378c54e947fff3cb7db241..4bf4da3919ba382cf55cb8621404613599d34771 100644 --- a/apps/web/src/components/settings/providerDriverMeta.ts +++ b/apps/web/src/components/settings/providerDriverMeta.ts @@ -43,7 +43,7 @@ export interface ProviderClientDefinition { readonly badgeLabel?: string; } -export const PROVIDER_CLIENT_DEFINITIONS: readonly ProviderClientDefinition[] = [ +const PROVIDER_CLIENT_DEFINITIONS: readonly ProviderClientDefinition[] = [ { value: ProviderDriverKind.make("codex"), label: "Codex", @@ -84,7 +84,7 @@ export const PROVIDER_CLIENT_DEFINITIONS: readonly ProviderClientDefinition[] = }, ]; -export const PROVIDER_CLIENT_DEFINITION_BY_VALUE: Partial< +const PROVIDER_CLIENT_DEFINITION_BY_VALUE: Partial< Record > = Object.fromEntries( PROVIDER_CLIENT_DEFINITIONS.map((definition) => [definition.value, definition]), diff --git a/apps/web/src/components/settings/themeInspector.ts b/apps/web/src/components/settings/themeInspector.ts index 9306226b8c866523103416a05ff6a055085166b6..b790c307a3d94eed38915708f474444ecdae3104 100644 --- a/apps/web/src/components/settings/themeInspector.ts +++ b/apps/web/src/components/settings/themeInspector.ts @@ -14,7 +14,7 @@ const THEME_PAINT_KIND_ORDER: ReadonlyArray = [ "foreground", ]; -export const THEME_INSPECTOR_MATCH_ATTRIBUTE = "data-theme-inspector-match"; +const THEME_INSPECTOR_MATCH_ATTRIBUTE = "data-theme-inspector-match"; const THEME_TOKEN_PROBE_ATTRIBUTE = "data-theme-token-probe"; const THEME_TOKEN_PROBE_COLOR = "#01fea7";