From 49e2992be5a984dad546e52a0d76ffb8abf76960 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 2 May 2026 07:10:14 +0100 Subject: [PATCH] refactor: hide ui helper internals --- ui/src/ui/assistant-identity.ts | 2 +- ui/src/ui/chat/attachment-payload-store.ts | 4 ++-- ui/src/ui/chat/session-cache.ts | 2 +- ui/src/ui/controllers/config.ts | 2 +- ui/src/ui/controllers/cron.ts | 8 +++----- ui/src/ui/controllers/exec-approvals.ts | 5 +---- ui/src/ui/gateway.ts | 2 +- ui/src/ui/session-key.ts | 2 +- ui/src/ui/theme.ts | 4 ++-- 9 files changed, 13 insertions(+), 18 deletions(-) diff --git a/ui/src/ui/assistant-identity.ts b/ui/src/ui/assistant-identity.ts index a1f29c86628..f30b83c2de3 100644 --- a/ui/src/ui/assistant-identity.ts +++ b/ui/src/ui/assistant-identity.ts @@ -14,7 +14,7 @@ const MAX_ASSISTANT_AVATAR_REASON = 200; // this module free of UI view imports (avoids an import cycle). const RENDERABLE_AVATAR_URL_RE = /^(data:image\/|\/(?!\/))/i; -export const DEFAULT_ASSISTANT_NAME = "Assistant"; +const DEFAULT_ASSISTANT_NAME = "Assistant"; export const DEFAULT_ASSISTANT_AVATAR = "A"; export type AssistantIdentity = { diff --git a/ui/src/ui/chat/attachment-payload-store.ts b/ui/src/ui/chat/attachment-payload-store.ts index 9c6af1809e0..d00c1aa8d6e 100644 --- a/ui/src/ui/chat/attachment-payload-store.ts +++ b/ui/src/ui/chat/attachment-payload-store.ts @@ -50,7 +50,7 @@ export function getChatAttachmentPreviewUrl(attachment: ChatAttachment): string ); } -export function cloneChatAttachmentMetadata(attachment: ChatAttachment): ChatAttachment { +function cloneChatAttachmentMetadata(attachment: ChatAttachment): ChatAttachment { const { dataUrl: _dataUrl, ...metadata } = attachment; return metadata; } @@ -76,7 +76,7 @@ export function releaseChatAttachmentPayloads(attachments: readonly ChatAttachme } } -export function discardChatAttachmentDataUrl(id: string): void { +function discardChatAttachmentDataUrl(id: string): void { const payload = payloads.get(id); if (!payload) { return; diff --git a/ui/src/ui/chat/session-cache.ts b/ui/src/ui/chat/session-cache.ts index 2891effa939..54aeb4921f4 100644 --- a/ui/src/ui/chat/session-cache.ts +++ b/ui/src/ui/chat/session-cache.ts @@ -1,4 +1,4 @@ -export const MAX_CACHED_CHAT_SESSIONS = 20; +const MAX_CACHED_CHAT_SESSIONS = 20; export function getOrCreateSessionCacheValue( map: Map, diff --git a/ui/src/ui/controllers/config.ts b/ui/src/ui/controllers/config.ts index 015e843fbf3..1d3a5299111 100644 --- a/ui/src/ui/controllers/config.ts +++ b/ui/src/ui/controllers/config.ts @@ -78,7 +78,7 @@ export async function loadConfigSchema(state: ConfigState) { } } -export function applyConfigSchema(state: ConfigState, res: ConfigSchemaResponse) { +function applyConfigSchema(state: ConfigState, res: ConfigSchemaResponse) { state.configSchema = res.schema ?? null; state.configUiHints = res.uiHints ?? {}; state.configSchemaVersion = res.version ?? null; diff --git a/ui/src/ui/controllers/cron.ts b/ui/src/ui/controllers/cron.ts index 10f3cca375f..c8337514ebc 100644 --- a/ui/src/ui/controllers/cron.ts +++ b/ui/src/ui/controllers/cron.ts @@ -89,9 +89,7 @@ export type CronModelSuggestionsState = { cronModelSuggestions: string[]; }; -export function supportsAnnounceDelivery( - form: Pick, -) { +function supportsAnnounceDelivery(form: Pick) { return form.sessionTarget !== "main" && form.payloadKind === "agentTurn"; } @@ -523,7 +521,7 @@ function jobToForm(job: CronJob, prev: CronFormState): CronFormState { return normalizeCronFormState(next); } -export function buildCronSchedule(form: CronFormState) { +function buildCronSchedule(form: CronFormState) { if (form.scheduleKind === "at") { const ms = Date.parse(form.scheduleAt); if (!Number.isFinite(ms)) { @@ -559,7 +557,7 @@ export function buildCronSchedule(form: CronFormState) { return { kind: "cron" as const, expr, tz: form.cronTz.trim() || undefined, staggerMs }; } -export function buildCronPayload(form: CronFormState) { +function buildCronPayload(form: CronFormState) { if (form.payloadKind === "systemEvent") { const text = form.payloadText.trim(); if (!text) { diff --git a/ui/src/ui/controllers/exec-approvals.ts b/ui/src/ui/controllers/exec-approvals.ts index c69f02e3a3a..be76cd3b5ab 100644 --- a/ui/src/ui/controllers/exec-approvals.ts +++ b/ui/src/ui/controllers/exec-approvals.ts @@ -106,10 +106,7 @@ export async function loadExecApprovals( } } -export function applyExecApprovalsSnapshot( - state: ExecApprovalsState, - snapshot: ExecApprovalsSnapshot, -) { +function applyExecApprovalsSnapshot(state: ExecApprovalsState, snapshot: ExecApprovalsSnapshot) { state.execApprovalsSnapshot = snapshot; if (!state.execApprovalsDirty) { state.execApprovalsForm = cloneConfigObject(snapshot.file ?? {}); diff --git a/ui/src/ui/gateway.ts b/ui/src/ui/gateway.ts index 6ecb79cd722..0b9f056646c 100644 --- a/ui/src/ui/gateway.ts +++ b/ui/src/ui/gateway.ts @@ -147,7 +147,7 @@ type SelectedConnectAuth = { canFallbackToShared: boolean; }; -export const CONTROL_UI_OPERATOR_ROLE = "operator"; +const CONTROL_UI_OPERATOR_ROLE = "operator"; export const CONTROL_UI_OPERATOR_SCOPES = [ "operator.admin", diff --git a/ui/src/ui/session-key.ts b/ui/src/ui/session-key.ts index 8594699053a..04c7391c3c5 100644 --- a/ui/src/ui/session-key.ts +++ b/ui/src/ui/session-key.ts @@ -36,7 +36,7 @@ export function parseAgentSessionKey( return { agentId, rest }; } -export function normalizeMainKey(value: string | undefined | null): string { +function normalizeMainKey(value: string | undefined | null): string { return normalizeOptionalLowercaseString(value) ?? DEFAULT_MAIN_KEY; } diff --git a/ui/src/ui/theme.ts b/ui/src/ui/theme.ts index 4e15afec353..373acca0fdf 100644 --- a/ui/src/ui/theme.ts +++ b/ui/src/ui/theme.ts @@ -11,7 +11,7 @@ export type ResolvedTheme = | "custom-light"; export const VALID_THEME_NAMES = new Set(["claw", "knot", "dash", "custom"]); -export const VALID_THEME_MODES = new Set(["system", "light", "dark"]); +const VALID_THEME_MODES = new Set(["system", "light", "dark"]); type ThemeSelection = { theme: ThemeName; mode: ThemeMode }; @@ -29,7 +29,7 @@ const LEGACY_MAP: Record = { system: { theme: "claw", mode: "system" }, }; -export function prefersLightScheme(): boolean { +function prefersLightScheme(): boolean { if (typeof globalThis.matchMedia !== "function") { return false; }