diff --git a/.gitignore b/.gitignore index 58d9bc8e9..a13f02972 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,6 @@ # Frontend /frontend/node_modules/ /frontend/dist/ -/frontend/.vite/ /frontend/.pnpm-store/ /frontend/.pnpm-cache/ *.tsbuildinfo diff --git a/docs/development.md b/docs/development.md index 2f9fa5717..66661d544 100644 --- a/docs/development.md +++ b/docs/development.md @@ -48,7 +48,7 @@ pnpm --dir frontend build:source pnpm --dir modules/plugins/examples/workbench/frontend build:source ``` -`build:source` 用各项目的 `tsconfig.source.json` 检查源码类型,再构建到各自 `.vite/source-dist`,不改写正式依赖、锁文件或 `dist`。正常 `dev`、`build`、宿主发行 CI 和 Docker 仍消费锁定的 UI 包,无需初始化子模块。CI 另有源码联调检查,显式检出子模块、核对 UI 提交锁定并验证这两个命令。 +`build:source` 用各项目的 `tsconfig.source.json` 检查源码类型,管理端构建到 `frontend/node_modules/.vite/source-dist`,示例构建到其前端项目的 `.vite/source-dist`,不改写正式依赖、锁文件或 `dist`。正常 `dev`、`build`、宿主发行 CI 和 Docker 仍消费锁定的 UI 包,无需初始化子模块。CI 另有源码联调检查,显式检出子模块、核对 UI 提交锁定并验证这两个命令。 ### 本地 SDK 验证 diff --git a/frontend/src/components/ApiKeyConfigModal.vue b/frontend/src/components/ApiKeyConfigModal.vue index a72e1d49e..be16578e6 100644 --- a/frontend/src/components/ApiKeyConfigModal.vue +++ b/frontend/src/components/ApiKeyConfigModal.vue @@ -3,11 +3,7 @@ import { BaseButton, BaseIconButton, BaseModal, BaseScrollbar, BaseSegmented, Ba import { Apple, Copy, Monitor, Upload } from '@lucide/vue' import { computed, shallowRef } from 'vue' -import { buildCodexCcSwitchImportDeeplink } from '@/utils/ccswitchImport' -import { - buildCodexConfigFiles, - CODEX_WEBSOCKET_ENABLED_BY_DEFAULT, -} from '@/utils/codexConfig' +import { buildCodexCcSwitchImportDeeplink, buildCodexConfigFiles, CODEX_WEBSOCKET_ENABLED_BY_DEFAULT } from '@/utils/client' const props = withDefaults(defineProps<{ title?: string diff --git a/frontend/src/components/LastUsedAtCell.vue b/frontend/src/components/LastUsedAtCell.vue index efff7ee20..4f9230f96 100644 --- a/frontend/src/components/LastUsedAtCell.vue +++ b/frontend/src/components/LastUsedAtCell.vue @@ -2,7 +2,7 @@ import { computed } from 'vue' import { useUiClock } from '@/composables/useUiClock' -import { formatDateTime, formatRelativeTime } from '@/utils/date' +import { formatDateTime, formatRelativeTime } from '@/utils/format' const props = defineProps<{ value: string | null diff --git a/frontend/src/components/SchemaForm/index.vue b/frontend/src/components/SchemaForm/index.vue index 864525145..7fd277a1d 100644 --- a/frontend/src/components/SchemaForm/index.vue +++ b/frontend/src/components/SchemaForm/index.vue @@ -3,7 +3,7 @@ import type { InputField } from './schema' import { BaseForm, BaseFormItem, BaseIconButton, BaseInput, BasePopover, BaseSelect, BaseTextarea } from '@codex-proxy/ui' import { Braces, Info, List } from '@lucide/vue' import { computed, nextTick, shallowRef, useTemplateRef } from 'vue' -import { jsonObjectError, parseJsonObject } from '@/utils/jsonObject' +import { jsonObjectError, parseJsonObject } from '@/utils/data' import { inputFields } from './schema' const props = defineProps<{ diff --git a/frontend/src/components/SchemaForm/schema.ts b/frontend/src/components/SchemaForm/schema.ts index 1b4f8c6a4..dff594b01 100644 --- a/frontend/src/components/SchemaForm/schema.ts +++ b/frontend/src/components/SchemaForm/schema.ts @@ -1,4 +1,4 @@ -import { isRecord } from '@/utils/object' +import { isRecord } from '@/utils/data' export interface InputField { key: string diff --git a/frontend/src/components/charts/tooltip.ts b/frontend/src/components/charts/tooltip.ts index 9543e8202..af223891f 100644 --- a/frontend/src/components/charts/tooltip.ts +++ b/frontend/src/components/charts/tooltip.ts @@ -1,4 +1,4 @@ -import { isRecord } from '@/utils/object' +import { isRecord } from '@/utils/data' interface ChartTooltipTheme { surface: string diff --git a/frontend/src/components/client-profile/ClientProfileEditor.vue b/frontend/src/components/client-profile/ClientProfileEditor.vue index ab0b2758f..621d946ca 100644 --- a/frontend/src/components/client-profile/ClientProfileEditor.vue +++ b/frontend/src/components/client-profile/ClientProfileEditor.vue @@ -7,7 +7,7 @@ import type { import { BaseButton, BaseSegmented } from '@codex-proxy/ui' import { computed, onMounted, shallowRef, watch } from 'vue' import { getClientProfileOptions, previewClientProfile } from '@/api/modules/client-profiles' -import { errorMessage } from '@/utils/async' +import { errorMessage } from '@/utils/operation' import ClientProfilePresetFields from './ClientProfilePresetFields.vue' import ClientProfilePreviewPanel from './ClientProfilePreviewPanel.vue' diff --git a/frontend/src/components/client-profile/ClientProfilePreviewPanel.vue b/frontend/src/components/client-profile/ClientProfilePreviewPanel.vue index 6f5f0ee8f..c7cad6285 100644 --- a/frontend/src/components/client-profile/ClientProfilePreviewPanel.vue +++ b/frontend/src/components/client-profile/ClientProfilePreviewPanel.vue @@ -1,7 +1,7 @@