diff --git a/.changeset/web-components-subdirs.md b/.changeset/web-components-subdirs.md new file mode 100644 index 000000000..208897e1d --- /dev/null +++ b/.changeset/web-components-subdirs.md @@ -0,0 +1,5 @@ +--- +"@moonshot-ai/kimi-code": patch +--- + +Reorganize the web app's components into area subdirectories (chat/settings/dialogs/mobile) and refresh the component path comments. diff --git a/apps/kimi-web/AGENTS.md b/apps/kimi-web/AGENTS.md index 8a6411ec4..bd7940fef 100644 --- a/apps/kimi-web/AGENTS.md +++ b/apps/kimi-web/AGENTS.md @@ -10,7 +10,7 @@ The browser web UI for Kimi Code — a peer to the TUI in `apps/kimi-code`. It t - `main.ts` — bootstrap (creates the app, installs i18n, mounts `#app`). `App.vue` — root component, holds most app state. - `api/` — server client. `index.ts` exposes the `getKimiWebApi()` singleton; `config.ts` builds REST/WS URLs; `daemon/` holds the wire client (`http.ts`, `ws.ts`, `wire.ts`, `mappers.ts`, `agentEventProjector.ts`, `eventReducer.ts`). -- `components/` — ~50 flat SFCs, no subdirectories. +- `components/` — SFCs grouped by area: `chat/` (conversation/chat UI), `settings/` (settings & configuration), `dialogs/` (modal dialogs & sheets), `mobile/` (mobile-specific shell), plus shared layout components at the top level. - `composables/` — reusable state logic, `useX` naming (`useKimiWebClient`, `useIsDark`, `usePaneLayout`, …). - `lib/` — pure helpers (`parseDiff`, `slashCommands`, `sessionRoute`, `toolMeta`, …). - `i18n/` — vue-i18n setup plus locale namespaces. diff --git a/apps/kimi-web/src/App.vue b/apps/kimi-web/src/App.vue index 64474fc7d..0fa5d7b0c 100644 --- a/apps/kimi-web/src/App.vue +++ b/apps/kimi-web/src/App.vue @@ -4,25 +4,25 @@ import { computed, nextTick, onMounted, onUnmounted, provide, ref } from 'vue'; import { useI18n } from 'vue-i18n'; import Sidebar from './components/Sidebar.vue'; import ResizeHandle from './components/ResizeHandle.vue'; -import ConversationPane from './components/ConversationPane.vue'; +import ConversationPane from './components/chat/ConversationPane.vue'; import FilePreview from './components/FilePreview.vue'; -import ThinkingPanel from './components/ThinkingPanel.vue'; -import AgentDetailPanel from './components/AgentDetailPanel.vue'; -import SideChatPanel from './components/SideChatPanel.vue'; -import DiffView from './components/DiffView.vue'; -import ModelPicker from './components/ModelPicker.vue'; -import ProviderManager from './components/ProviderManager.vue'; -import LoginDialog from './components/LoginDialog.vue'; -import NewSessionDialog from './components/NewSessionDialog.vue'; -import SettingsDialog from './components/SettingsDialog.vue'; -import SessionsDialog from './components/SessionsDialog.vue'; -import AddWorkspaceDialog from './components/AddWorkspaceDialog.vue'; -import StatusPanel from './components/StatusPanel.vue'; +import ThinkingPanel from './components/chat/ThinkingPanel.vue'; +import AgentDetailPanel from './components/chat/AgentDetailPanel.vue'; +import SideChatPanel from './components/chat/SideChatPanel.vue'; +import DiffView from './components/chat/DiffView.vue'; +import ModelPicker from './components/settings/ModelPicker.vue'; +import ProviderManager from './components/settings/ProviderManager.vue'; +import LoginDialog from './components/dialogs/LoginDialog.vue'; +import NewSessionDialog from './components/dialogs/NewSessionDialog.vue'; +import SettingsDialog from './components/settings/SettingsDialog.vue'; +import SessionsDialog from './components/dialogs/SessionsDialog.vue'; +import AddWorkspaceDialog from './components/dialogs/AddWorkspaceDialog.vue'; +import StatusPanel from './components/chat/StatusPanel.vue'; import WarningToasts from './components/WarningToasts.vue'; -import MobileTopBar from './components/MobileTopBar.vue'; -import MobileSwitcherSheet from './components/MobileSwitcherSheet.vue'; -import MobileSettingsSheet from './components/MobileSettingsSheet.vue'; -import Onboarding from './components/Onboarding.vue'; +import MobileTopBar from './components/mobile/MobileTopBar.vue'; +import MobileSwitcherSheet from './components/mobile/MobileSwitcherSheet.vue'; +import MobileSettingsSheet from './components/mobile/MobileSettingsSheet.vue'; +import Onboarding from './components/settings/Onboarding.vue'; import GlobalLoading from './components/GlobalLoading.vue'; import DebugPanel from './debug/DebugPanel.vue'; import { isTraceEnabled } from './debug/trace'; diff --git a/apps/kimi-web/src/components/FilePreview.vue b/apps/kimi-web/src/components/FilePreview.vue index 6474dd9b5..948e50216 100644 --- a/apps/kimi-web/src/components/FilePreview.vue +++ b/apps/kimi-web/src/components/FilePreview.vue @@ -3,7 +3,7 @@